File Coverage

blib/lib/Parse/HTTP/UserAgent/Base/Accessors.pm
Criterion Covered Total %
statement 56 60 93.3
branch 5 6 83.3
condition 6 10 60.0
subroutine 16 18 88.8
pod 2 2 100.0
total 85 96 88.5


line stmt bran cond sub pod time code
1             package Parse::HTTP::UserAgent::Base::Accessors;
2             $Parse::HTTP::UserAgent::Base::Accessors::VERSION = '0.43';
3 4     4   201694 use strict;
  4         7  
  4         148  
4 4     4   18 use warnings;
  4         6  
  4         214  
5 4     4   375 use Parse::HTTP::UserAgent::Constants qw(:all);
  4         7  
  4         1337  
6              
7             BEGIN {
8 4     4   37 my @simple = qw(
9             device
10             generic
11             lang
12             mobile
13             name
14             original_name
15             original_version
16             os
17             parser
18             robot
19             strength
20             tablet
21             touch
22             unknown
23             wap
24             );
25              
26 4         23 my @multi = qw(
27             mozilla
28             extras
29             dotnet
30             );
31              
32 4     4   29 no strict qw(refs); ## no critic (TestingAndDebugging::ProhibitNoStrict)
  4         6  
  4         808  
33 4         13 foreach my $name ( @simple ) {
34 60         144 my $id = 'UA_' . uc $name;
35 60         284 $id = __PACKAGE__->$id();
36 60   100 2597   163 *{ $name } = sub { return shift->[$id] || q{} };
  60         257  
  2597         157093  
37             }
38              
39 4         9 foreach my $name ( @multi ) {
40 12         23 my $id = 'UA_' . uc $name;
41 12         89 $id = __PACKAGE__->$id();
42 12         611 *{ $name } = sub {
43 646     646   1985 my $self = shift;
44 646 100       2228 return +() if ! $self->[ $id ];
45 286         490 my @rv = @{ $self->[ $id ] };
  286         908  
46 286 50       1198 return wantarray ? @rv : $rv[0];
47 12         63 };
48             }
49             }
50              
51             sub version {
52 562     562 1 1281 my $self = shift;
53 562   100     2434 my $type = shift || q{};
54 562   100     4095 return $self->[ $type eq 'raw' ? UA_VERSION_RAW : UA_VERSION ] || 0;
55             }
56              
57             sub toolkit {
58 281     281 1 1228 my $self = shift;
59 281         1056 return Parse::HTTP::UserAgent::Base::Accessors::toolkit->new(
60             $self->[UA_TOOLKIT]
61             );
62             }
63              
64             package
65             Parse::HTTP::UserAgent::Base::Accessors::toolkit;
66 4     4   26 use strict;
  4         7  
  4         90  
67 4     4   29 use warnings;
  4         7  
  4         229  
68 4         35 use overload '""', => 'name',
69             '0+', => 'version',
70             fallback => 1,
71 4     4   19 ;
  4         7  
72 4     4   365 use constant ID_NAME => 0;
  4         20  
  4         283  
73 4     4   20 use constant ID_VERSION_RAW => 1;
  4         4  
  4         177  
74 4     4   24 use constant ID_VERSION => 2;
  4         4  
  4         715  
75              
76             sub new {
77 281     281   730 my($class, $tk) = @_;
78 281 100       1088 return bless [ $tk ? @{ $tk } : (undef) x 3 ], $class;
  133         654  
79             }
80              
81             sub name {
82 0     0     return shift->[ID_NAME];
83             }
84              
85             sub version {
86 0     0     my $self = shift;
87 0   0       my $type = shift || q{};
88 0   0       return $self->[ $type eq 'raw' ? ID_VERSION_RAW : ID_VERSION ] || 0;
89             }
90              
91             1;
92              
93             __END__