File Coverage

blib/lib/Data/Partial/Google.pm
Criterion Covered Total %
statement 21 21 100.0
branch 5 6 83.3
condition 3 3 100.0
subroutine 7 7 100.0
pod 1 4 25.0
total 37 41 90.2


line stmt bran cond sub pod time code
1             package Data::Partial::Google;
2             # ABSTRACT: Filter data structures for "partial responses," Google style
3             our $VERSION = '0.00_01'; # VERSION
4             our $AUTHORITY = 'cpan:ARODLAND'; # AUTHORITY
5 2     2   171654 use Moo;
  2         16997  
  2         7  
6              
7 2     2   2725 use Data::Partial::Google::Parser;
  2         5  
  2         169  
8 2     2   1117 use Data::Partial::Google::Filter;
  2         6  
  2         401  
9              
10             has rule => (
11             is => 'ro',
12             );
13              
14             has filter => (
15             is => 'ro',
16             lazy => 1,
17             default => sub {
18             Data::Partial::Google::Parser->parse(shift->rule)
19             },
20             );
21              
22             # Allow Data::Partial::Google->new("a,b(c/d)")
23             sub BUILDARGS {
24 24     24 0 45236 my ($class, @args) = @_;
25 24 50       79 unshift @args, "rule" if @args % 2;
26 24         320 return { @args };
27             }
28              
29             sub has_rule {
30 48     48 0 41 my ($self) = @_;
31 48         70 my $rule = $self->rule;
32 48   100     465 return defined $rule && length $rule;
33             }
34              
35             sub BUILD {
36 24     24 0 177 my ($self) = @_;
37 24 100       39 $self->filter if $self->has_rule;
38             }
39              
40             sub mask {
41 24     24 1 12614 my ($self, $obj) = @_;
42 24 100       35 if ($self->has_rule) {
43 22         456 return $self->filter->mask($obj);
44             } else {
45 2         5 return $obj;
46             }
47             }
48              
49             1;
50              
51             __END__