summaryrefslogtreecommitdiffstats
path: root/lib/Text/Handlebars.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Text/Handlebars.pm')
-rw-r--r--lib/Text/Handlebars.pm18
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/Text/Handlebars.pm b/lib/Text/Handlebars.pm
index 25075b1..a040504 100644
--- a/lib/Text/Handlebars.pm
+++ b/lib/Text/Handlebars.pm
@@ -90,6 +90,7 @@ sub options {
my $options = $class->SUPER::options(@_);
$options->{compiler} = 'Text::Handlebars::Compiler';
+ $options->{helpers} = {};
return $options;
}
@@ -128,6 +129,23 @@ sub _register_builtin_methods {
return $code->($vars, @args, $options);
};
+
+ for my $helper (keys %{ $self->{helpers} }) {
+ $funcs->{$helper} = $self->{helpers}{$helper};
+ }
+}
+
+sub _compiler {
+ my $self = shift;
+
+ if (!ref($self->{compiler})) {
+ my $compiler = $self->SUPER::_compiler(@_);
+ $compiler->define_helper(keys %{ $self->{helpers} });
+ return $compiler;
+ }
+ else {
+ return $self->SUPER::_compiler(@_);
+ }
}
sub render_string {