X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FTemplate%2FSimple.pm;h=4dd68a4ad7524805fa6710b8999d15930f0837ce;hb=ca30cbfe69d42d85468bd8b05ee5753cda5a009e;hp=d4804ba1a70336a78c040b101d86025252d4cf90;hpb=7dd120001373ca771b4baf231269e2296a908ce1;p=urisagit%2FTemplate-Simple.git diff --git a/lib/Template/Simple.pm b/lib/Template/Simple.pm index d4804ba..4dd68a4 100644 --- a/lib/Template/Simple.pm +++ b/lib/Template/Simple.pm @@ -108,7 +108,7 @@ sub compile { my $code_body = $self->_compile_chunk( '', "${$tmpl_ref}", "\t" ) ; - $self->{source} = <{source_cache}{$template_name} = $self->{source} ; - print $self->{source} ; +#print $source ; - my $code_ref = eval $self->{source} ; + my $code_ref = eval $source ; -die $@ if $@ ; +print $@ if $@ ; $self->{compiled_cache}{$template_name} = $code_ref ; + $self->{source_cache}{$template_name} = $source ; +} + +sub get_source { + + my( $self, $template_name ) = @_ ; + + return $self->{source_cache}{$template_name} ; } @@ -142,13 +149,19 @@ sub _compile_chunk { # loop all nested chunks and the text separating them - while( $template =~ m{$self->{chunk_re}}g ) { + while( $template =~ m{$self->{chunk_re}} ) { # grab the pre-match text and compile its scalars and save all of its parts push @parts, $self->_compile_scalars( substr( $template, 0, $-[0] ) ) ; +# print "OFF: $-[0] $+[0]\n" ; +# print "PRE: [", substr( $template, 0, $-[0] ), "]\n\n" ; +# print "CHUNK: [$1] BODY [$2]\n\n" ; +# print "TRUNC: [", substr( $template, 0, $+[0] ), "]\n\n" ; +# print "LEFT: [$template]\n\n" ; + # compile the nested chunk and save its parts push @parts, $self->_compile_chunk( $1, $2, "$indent\t\t" ) ; @@ -156,6 +169,10 @@ sub _compile_chunk { # chop off the pre-match and the chunk substr( $template, 0, $+[0], '' ) ; + +# print "LEFT2: [$template]\n\n" ; +# print Dumper \@parts ; + } # compile trailing text for scalars and save all of its parts @@ -183,11 +200,22 @@ CODE $code .= <{$1}" ) ; + +# truncate the matched text so the next match starts at begining of string + substr( $template, 0, $+[0], '' ) ; } @@ -359,8 +390,8 @@ sub _render_hash { $rendered =~ s{$self->{chunk_re}} { # print "CHUNK $1\nBODY\n----\n<$2>\n\n------\n" ; - print "CHUNK $1\nBODY\n----\n<$2>\n\n------\n" ; - print "pre CHUNK [$`]\n" ; +# print "CHUNK $1\nBODY\n----\n<$2>\n\n------\n" ; +# print "pre CHUNK [$`]\n" ; ${ $self->_render_chunk( \"$2", $href->{$1} ) } }gex ;