File Coverage

blib/lib/HTML/Template/Pro/Extension/SLASH_VAR.pm
Criterion Covered Total %
statement 24 26 92.3
branch 2 2 100.0
condition 0 3 0.0
subroutine 7 8 87.5
pod 0 3 0.0
total 33 42 78.5


line stmt bran cond sub pod time code
1             package HTML::Template::Pro::Extension::SLASH_VAR;
2              
3             $VERSION = "0.11";
4 0     0 0 0 sub Version { $VERSION; }
5              
6 1     1   6 use Carp;
  1         2  
  1         64  
7 1     1   5 use strict;
  1         2  
  1         416  
8              
9             my %fields_parent =
10             (
11             );
12              
13              
14             my $re_var = q{
15             ((<\s* # first <
16             [Tt][Mm][Pp][Ll]_[Vv][Aa][Rr] # interesting TMPL_VAR tag only
17             (?:.*?)>) # this is H:T standard tag
18             ((?:.*?) # delete alla after here
19             <\s*\/ # if there is the tag
20             [Tt][Mm][Pp][Ll]_[Vv][Aa][Rr]
21             \s*>))
22             };
23              
24             sub init {
25 3     3 0 5 my $self = shift;
26 3         16 while (my ($key,$val) = each(%fields_parent)) {
27 0   0     0 $self->{$key} = $self->{$key} || $val;
28             }
29             }
30              
31              
32             sub get_filter {
33 3     3 0 6 my $self = shift;
34 3         536 return &_get_filter($self);
35             }
36              
37             sub _get_filter {
38 3     3   3 my $self = shift;
39 3         3 my @ret ;
40 3         6 push @ret,\&_slash_var;
41 3         4 push @ret,\&_vanguard_syntax;
42 3         11 return @ret;
43             }
44              
45              
46             # funzione filtro per aggiungere il tag
47             # da tenere fintanto che la nostra patch non sia inserita nella
48             # distribuzione standard del modulo
49             sub _slash_var {
50 9     9   10 my $template = shift;
51 9         134 while ($$template =~/(?=$re_var)/sgx) {
52 12         28 my $two = $2;
53 12 100       143 if ($3 !~/(?:$re_var)/sx) {
54 10         159 $$template =~s{\Q$1}{$two}s;
55             }
56             }
57 9         25 return $$template;
58             }
59              
60             sub _vanguard_syntax {
61 9     9   10 my $template = shift;
62             # sintassi accettata %%....%% o %....% con .... che possono essere
63             # numeri, lettere , il punto. Tutto pero deve iniziare con una lettera
64 9         16 $$template =~ s/%%([_A-Za-z][-\w\/\.]+)%%//g;
65 9         45 $$template =~ s/%([_A-Za-z][-\w\/\.]+)%//g;
66             }
67              
68             1;