summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2012-10-19 10:42:20 -0500
committerJesse Luehrs <doy@tozt.net>2013-01-02 13:56:21 -0600
commitb2e891ea7b9e44bb598d41380d0c485f3955af6e (patch)
tree4ea08c88c94975bb1b78609c01c603a8826a8d45 /lib
parent271ae740506b9b64119494a3a34bfe8a9786037e (diff)
downloadtext-handlebars-b2e891ea7b9e44bb598d41380d0c485f3955af6e.tar.gz
text-handlebars-b2e891ea7b9e44bb598d41380d0c485f3955af6e.zip
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.
Diffstat (limited to 'lib')
-rw-r--r--lib/Text/Handlebars/Compiler.pm50
-rw-r--r--lib/Text/Xslate/Syntax/Handlebars.pm2
2 files changed, 13 insertions, 39 deletions
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 ]),
);
}