File Coverage

blib/lib/Archive/Har/Creator.pm
Criterion Covered Total %
statement 9 73 12.3
branch 0 34 0.0
condition 0 6 0.0
subroutine 3 9 33.3
pod 4 5 80.0
total 16 127 12.6


line stmt bran cond sub pod time code
1             package Archive::Har::Creator;
2              
3 1     1   5 use warnings;
  1         2  
  1         31  
4 1     1   4 use strict;
  1         2  
  1         19  
5 1     1   4 use Carp();
  1         2  
  1         796  
6              
7             our $VERSION = 0.19;
8              
9             sub new {
10 0     0 1   my ( $class, $params ) = @_;
11 0           my $self = {};
12 0           bless $self, $class;
13 0 0         if ( defined $params ) {
14 0           $self->name( $params->{name} );
15 0           $self->version( $params->{version} );
16 0 0         if ( defined $params->{comment} ) {
17 0           $self->comment( $params->{comment} );
18             }
19 0           foreach my $key ( sort { $a cmp $b } keys %{$params} ) {
  0            
  0            
20 0 0         if ( $key =~ /^_[[:alnum:]]+$/smx ) { # private fields
21 0           $self->$key( $params->{$key} );
22             }
23             }
24             }
25 0           return $self;
26             }
27              
28             sub name {
29 0     0 1   my ( $self, $new ) = @_;
30 0           my $old = $self->{name};
31 0 0         if ( @_ > 1 ) {
32 0 0         if ( defined $new ) {
33 0           $self->{name} = $new;
34             }
35             else {
36 0           $self->{name} = 'Unknown';
37             }
38             }
39 0 0 0       if ( ( defined $old ) && ( $old eq 'Unknown' ) ) {
40 0           return;
41             }
42             else {
43 0           return $old;
44             }
45             }
46              
47             sub version {
48 0     0 1   my ( $self, $new ) = @_;
49 0           my $old = $self->{version};
50 0 0         if ( @_ > 1 ) {
51 0 0         if ( defined $new ) {
52 0           $self->{version} = $new;
53             }
54             else {
55 0           $self->{version} = 'Unknown';
56             }
57             }
58 0 0 0       if ( ( defined $old ) && ( $old eq 'Unknown' ) ) {
59 0           return;
60             }
61             else {
62 0           return $old;
63             }
64             }
65              
66             sub comment {
67 0     0 1   my ( $self, $new ) = @_;
68 0           my $old = $self->{comment};
69 0 0         if ( @_ > 1 ) {
70 0           $self->{comment} = $new;
71             }
72 0           return $old;
73             }
74              
75             sub AUTOLOAD {
76 0     0     my ( $self, $new ) = @_;
77              
78 0           my $name = $Archive::Har::Creator::AUTOLOAD;
79 0           $name =~ s/.*://smx; # strip fully-qualified portion
80              
81 0           my $old;
82 0 0         if ( $name =~ /^_[[:alnum:]]+$/smx ) { # private fields
83 0           $old = $self->{$name};
84 0 0         if ( @_ > 1 ) {
85 0           $self->{$name} = $new;
86             }
87             }
88             else {
89 0           Carp::croak(
90             "$name is not specified in the HAR 1.2 spec and does not start with an underscore"
91             );
92             }
93 0           return $old;
94             }
95              
96             sub TO_JSON {
97 0     0 0   my ($self) = @_;
98 0           my $json = {};
99 0 0         if ( defined $self->name() ) {
100 0           $json->{name} = $self->name();
101             }
102             else {
103 0           $json->{name} = 'Unknown';
104             }
105 0 0         if ( defined $self->version() ) {
106 0           $json->{version} = $self->version();
107             }
108             else {
109 0           $json->{version} = 'Unknown';
110             }
111 0 0         if ( defined $self->comment() ) {
112 0           $json->{comment} = $self->comment();
113             }
114 0           foreach my $key ( sort { $a cmp $b } keys %{$self} ) {
  0            
  0            
115 0 0         next if ( !defined $self->{$key} );
116 0 0         if ( $key =~ /^_[[:alnum:]]+$/smx ) { # private fields
117 0           $json->{$key} = $self->{$key};
118             }
119             }
120 0           return $json;
121             }
122              
123             1;
124             __END__