From b2e891ea7b9e44bb598d41380d0c485f3955af6e Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Fri, 19 Oct 2012 10:42:20 -0500 Subject: simplify the logic for template suffixes now, anything that doesn't contain a '.' will have the suffix appended unconditionally, rather than looking for both the suffixed and unsuffixed versions. this is more in line with how text::xslate typically works. --- lib/Text/Handlebars/Compiler.pm | 50 +++++++++--------------------------- lib/Text/Xslate/Syntax/Handlebars.pm | 2 +- 2 files changed, 13 insertions(+), 39 deletions(-) (limited to 'lib') diff --git a/lib/Text/Handlebars/Compiler.pm b/lib/Text/Handlebars/Compiler.pm index 4681d30..356baeb 100644 --- a/lib/Text/Handlebars/Compiler.pm +++ b/lib/Text/Handlebars/Compiler.pm @@ -77,21 +77,24 @@ sub _generate_partial { my $self = shift; my ($node) = @_; - my $lvar_id = $self->lvar_id; - local $self->{lvar_id} = $self->lvar_use(1); - my $lvar = $node->clone(arity => 'lvar', id => $lvar_id); + my $file = $node->first; + if (ref($file) eq 'ARRAY') { + $file = $node->clone( + arity => 'binary', + id => '~', + first => $file->[0], + second => $self->call($node, '(suffix)'), + ); + } return ( - $self->compile_ast( - $self->save_lvar($lvar_id, $self->find_file($node->first->clone)), - ), $self->compile_ast( $self->make_ternary( - $lvar->clone, + $self->find_file($file->clone), $node->clone( arity => 'include', id => 'include', - first => $lvar->clone, + first => $file->clone, ), $self->literal(''), ), @@ -103,36 +106,7 @@ sub find_file { my $self = shift; my ($filename) = @_; - return $filename->clone( - arity => 'find_file', - first => $filename, - ); -} - -sub _generate_find_file { - my $self = shift; - my ($node) = @_; - - my $filename = $node->first; - my $with_suffix = $self->parser->symbol('~')->clone( - arity => 'binary', - first => $filename->clone, - second => $self->call($node, '(suffix)'), - ); - - return ( - $self->compile_ast( - $self->make_ternary( - $self->call($node, '(find_file)', $filename->clone), - $filename->clone, - $self->make_ternary( - $self->call($node, '(find_file)', $with_suffix->clone), - $with_suffix->clone, - $self->literal(''), - ), - ), - ), - ); + return $self->call($filename, '(find_file)', $filename); } sub _generate_for { diff --git a/lib/Text/Xslate/Syntax/Handlebars.pm b/lib/Text/Xslate/Syntax/Handlebars.pm index 957dc17..b8854ea 100644 --- a/lib/Text/Xslate/Syntax/Handlebars.pm +++ b/lib/Text/Xslate/Syntax/Handlebars.pm @@ -438,7 +438,7 @@ sub std_partial { return $symbol->clone( arity => 'partial', - first => $partial, + first => ($partial->id =~ /\./ ? $partial : [ $partial ]), ); } -- cgit v1.2.3-54-g00ecf