summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2012-10-08 15:21:08 -0500
committerJesse Luehrs <doy@tozt.net>2012-10-08 15:21:08 -0500
commit2fc8a855e6e6a8dc2d43f959e9c5ecd2ae9ea4c8 (patch)
treea184b9702409656a98ae3e0ff43eeab88f57c729
parent0a45bee673aa48c56607eb7f5f06c7a4b6bbca03 (diff)
downloadtext-handlebars-2fc8a855e6e6a8dc2d43f959e9c5ecd2ae9ea4c8.tar.gz
text-handlebars-2fc8a855e6e6a8dc2d43f959e9c5ecd2ae9ea4c8.zip
check partial suffix at runtime, not compile time
-rw-r--r--lib/Text/Handlebars.pm4
-rw-r--r--lib/Text/Handlebars/Compiler.pm17
2 files changed, 4 insertions, 17 deletions
diff --git a/lib/Text/Handlebars.pm b/lib/Text/Handlebars.pm
index f8d1692..ab76b42 100644
--- a/lib/Text/Handlebars.pm
+++ b/lib/Text/Handlebars.pm
@@ -120,9 +120,9 @@ sub _register_builtin_methods {
};
$funcs->{'(find_file)'} = sub {
my ($filename) = @_;
- return 1 if try { $weakself->find_file($filename); 1 };
+ return $filename if try { $weakself->find_file($filename); 1 };
$filename .= $weakself->{suffix};
- return 1 if try { $weakself->find_file($filename); 1 };
+ return $filename if try { $weakself->find_file($filename); 1 };
return 0;
};
$funcs->{'(make_block_helper)'} = sub {
diff --git a/lib/Text/Handlebars/Compiler.pm b/lib/Text/Handlebars/Compiler.pm
index d4dd232..384732c 100644
--- a/lib/Text/Handlebars/Compiler.pm
+++ b/lib/Text/Handlebars/Compiler.pm
@@ -41,16 +41,6 @@ sub _generate_key_field {
return $self->compile_ast($self->check_lambda($field));
}
-sub _generate_include {
- my $self = shift;
- my ($node) = @_;
-
- my $file = $node->first;
- $file->id($file->id . $self->engine->{suffix})
- unless try { $self->engine->find_file($file->id); 1 };
- return $self->SUPER::_generate_include($node);
-}
-
sub _generate_call {
my $self = shift;
my ($node) = @_;
@@ -93,12 +83,9 @@ sub _generate_partial {
$node->clone(
arity => 'include',
id => 'include',
- first => $node->first,
- ),
- $node->clone(
- arity => 'literal',
- id => '',
+ first => $self->call($node, '(find_file)', $node->first),
),
+ $self->parser->literal(''),
),
);
}