From: Uri Guttman <uri@quad.(none)> Date: Fri, 6 May 2011 07:42:54 +0000 (-0400) Subject: added support for template::teeny X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=7af713e3d56a26c199ffc0ac332948f1ac99e8ed;p=urisagit%2FTemplate-Simple.git added support for template::teeny --- diff --git a/extras/bench_new.pl b/extras/bench_new.pl old mode 100644 new mode 100755 index 62101dc..24bd979 --- a/extras/bench_new.pl +++ b/extras/bench_new.pl @@ -1,12 +1,15 @@ +#!/usr/bin/perl + +use lib '../lib' ; +use lib 'lib' ; use warnings ; use strict ; -use Getopt::Long ; use Data::Dumper ; +use Getopt::Long ; use File::Slurp ; - use Benchmark qw(:hireswallclock cmpthese); my $opts = parse_options() ; @@ -89,16 +92,15 @@ TOOLKIT <html> <head><title>[% title %]</title></head> <body> - <ul> - [% SECTION post %] + <ul>[% SECTION post %] <li> <h3>[% title %]</h3> <span>[% date %]</span> - </li> - [% END %] + </li>[% END %] </ul> </body> </html> + TEENY }, ] ; @@ -157,6 +159,68 @@ my $benches = [ $bench->{result} = ${$result} ; }, }, + { + name => 'Teeny', + template_key => 'teeny', + load => sub { + return eval { + require Template::Teeny ; + require Template::Teeny::Stash ; + } ; + }, + setup => sub { + my( $bench, $info ) = @_ ; + + my $template = $info->{$bench->{template_key}} ; + my $data = $info->{data} ; + my $name = $info->{name} ; + + my $results ; + open my $fh, '>', \$results or + die "can't open string for output" ; + + mkdir 'tpl' ; + write_file( "tpl/$name.tpl", $template ) ; + my $obj = Template::Teeny->new( + { include_path => ['tpl'] } + ) ; + + my $stash ; + if ( my $posts = $data->{posts} ) { + + $stash = Template::Teeny::Stash->new( + { title => $data->{title} } + ) ; + + foreach my $post ( @{$posts} ) { + + my $substash = + Template::Teeny::Stash->new( + $post + ) ; + $stash->add_section('post', $substash ); + } + } + else { + $stash = Template::Teeny::Stash->new( + $data + ) ; + + } + +#print Dumper $stash ; + $bench->{render} = + sub { + $obj->process("$name.tpl", $stash, $fh ); + $bench->{result} = $results ; + } + + }, + verify => sub { + my( $bench, $info ) = @_ ; + $bench->{result} = $bench->{render}->() ; + }, + }, ] ; run_benchmarks() ; @@ -171,33 +235,41 @@ sub run_benchmarks { my $loaded = $bench->{load}->() ; unless( $loaded ) { - print - "skipping $bench->{name} as it didn't load\n" ; + print <<BAD ; +Skipping $bench->{name} as it didn't load +BAD next ; } $bench->{setup}->( $bench, $info ) ; - $bench->{verify}->( $bench, $info ) ; - if ( $bench->{result} ne $info->{expected} ) { - - print - "RESULT [$bench->{result}]\nEXPECTED [$info->{expected}]\n" ; - } - else { - print "'$bench->{name}' rendering of '$info->{name}' is verified\n" ; + if ( $opts->{verify} ) { + $bench->{verify}->( $bench, $info ) ; + + if ( $bench->{result} ne $info->{expected} ) { + + print <<BAD ; +Skipping $bench->{name} as it doesn't have verified results. +RESULT [$bench->{result}]\nEXPECTED [$info->{expected}] +BAD + next ; + } + else { + print <<GOOD ; +'$bench->{name}' rendering of '$info->{name}' is verified +GOOD + } } $compares{ $bench->{name} } = $bench->{render} ; } + print "\nBenchmark of '$info->{name}' template\n" ; cmpthese( $opts->{iterations}, \%compares ) ; + print "\n" ; } } - - - sub parse_options { GetOptions( \my %opts,