| 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; |