File Coverage

blib/lib/WWW/Shopify/Liquid/Tag.pm
Criterion Covered Total %
statement 12 48 25.0
branch 0 14 0.0
condition 0 15 0.0
subroutine 4 18 22.2
pod 0 9 0.0
total 16 104 15.3


line stmt bran cond sub pod time code
1             #!/usr/bin/perl
2              
3 30     30   172 use strict;
  30         47  
  30         909  
4 30     30   120 use warnings;
  30         40  
  30         998  
5              
6             package WWW::Shopify::Liquid::Tag;
7 30     30   114 use base 'WWW::Shopify::Liquid::Element';
  30         46  
  30         18826  
8              
9 0     0 0   sub inner_tags { return (); }
10 0 0   0 0   sub abstract { my $package = ref($_[0]) ? ref($_[0]) : $_[0]; return ($package eq __PACKAGE__); }
  0            
11 0 0   0 0   sub name { my $package = ref($_[0]) ? ref($_[0]) : $_[0]; $package =~ s/^.*:://; $package =~ s/([a-z])([A-Z])/$1_$2/g; return lc($package); }
  0            
  0            
  0            
12             sub new {
13 0     0 0   my ($package, $line, $tag, $arguments, $contents) = @_;
14 0           my $self = { line => $line, core => $tag, arguments => $arguments, contents => $contents };
15 0           return bless $self, $package;
16             }
17 0     0 0   sub is_free { return 0; }
18 0     0 0   sub is_enclosing { return 0; }
19 0     0 0   sub min_arguments { return 0; }
20 0     0 0   sub max_arguments { return undef; }
21              
22 0     0 0   sub tokens { return ($_[0], map { $_->tokens } grep { defined $_ } (@{$_[0]->{arguments}}, $_[0]->{contents})) }
  0            
  0            
  0            
23              
24             package WWW::Shopify::Liquid::Tag::Output;
25 30     30   199 use base 'WWW::Shopify::Liquid::Tag::Free';
  30         55  
  30         14477  
26              
27 0     0     sub max_arguments { return 1; }
28 0     0     sub abstract { return 0; }
29              
30             sub new {
31 0     0     my ($package, $line, $arguments) = @_;
32 0           my $self = { arguments => $arguments, line => $line };
33 0           return bless $self, $package;
34             }
35             sub process {
36 0     0     my ($self, $hash, $action, $pipeline) = @_;
37 0 0         return '' unless int(@{$self->{arguments}}) > 0;
  0            
38 0           my $result = $self->{arguments}->[0]->$action($pipeline, $hash);
39 0 0 0       return '' if !defined $result && ref($result) && (ref($result) eq "ARRAY" || ref($result) eq "HASH");
      0        
      0        
40 0           return $result;
41             }
42              
43             sub optimize {
44 0     0     my ($self, $optimizer, $hash) = @_;
45 0 0         $self->{arguments}->[0] = $self->{arguments}->[0]->optimize($optimizer, $hash) if !$self->is_processed($self->{arguments}->[0]);
46            
47 0 0         if ($self->is_processed($self->{arguments}->[0])) {
48 0           my $result = $self->{arguments}->[0];
49 0 0 0       return '' if ref($result) && (ref($result) eq "ARRAY" || ref($result) eq "HASH");
      0        
50 0           return $result;
51             }
52 0           return $self;
53             }
54              
55             1;