File Coverage

blib/lib/HTTP/UserAgentClientHints/BrandVersion.pm
Criterion Covered Total %
statement 25 25 100.0
branch n/a
condition n/a
subroutine 7 7 100.0
pod 3 3 100.0
total 35 35 100.0


line stmt bran cond sub pod time code
1             package HTTP::UserAgentClientHints::BrandVersion;
2 3     3   108135 use strict;
  3         21  
  3         82  
3 3     3   15 use warnings;
  3         9  
  3         68  
4 3     3   1228 use HTTP::UserAgentClientHints::Util;
  3         7  
  3         765  
5              
6             sub new {
7 3     3 1 85 my ($class, $raw_brand_version) = @_;
8              
9 3         10 bless {
10             _parsed_brand_version => $class->_parse_brand_version($raw_brand_version),
11             }, $class;
12             }
13              
14             sub brands {
15 2     2 1 1352 my $self = shift;
16              
17 2         4 return [keys %{$self->{_parsed_brand_version}}];
  2         17  
18             }
19              
20             sub brand_version {
21 3     3 1 674 my $self = shift;
22              
23 3         8 return {%{$self->{_parsed_brand_version}}};
  3         39  
24             }
25              
26             sub _parse_brand_version {
27 3     3   7 my ($self, $raw_brand_version) = @_;
28              
29 3         20 my @pairs = split /,\s*/, $raw_brand_version;
30              
31 3         7 my %brand_version;
32 3         7 for my $pair (@pairs) {
33 9         36 my ($brand, $version) = map { HTTP::UserAgentClientHints::Util->strip_quote($_) } split /;\s*v=/, $pair;
  18         46  
34 9         32 $brand_version{$brand} = $version;
35             }
36              
37 3         14 return \%brand_version;
38             }
39              
40             1;
41              
42             __END__