diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Text/Handlebars.pm | 24 | ||||
-rw-r--r-- | lib/Text/Xslate/Syntax/Handlebars.pm | 3 |
2 files changed, 26 insertions, 1 deletions
diff --git a/lib/Text/Handlebars.pm b/lib/Text/Handlebars.pm index 71b1ac1..c1afc32 100644 --- a/lib/Text/Handlebars.pm +++ b/lib/Text/Handlebars.pm @@ -130,4 +130,28 @@ sub _register_builtin_methods { }; } +sub render_string { + my $self = shift; + my ($string, $vars) = @_; + + if (ref($vars) && ref($vars) eq 'HASH') { + return $self->SUPER::render_string(@_); + } + else { + return $self->SUPER::render_string($string, { '.' => $vars }); + } +} + +sub render { + my $self = shift; + my ($name, $vars) = @_; + + if (ref($vars) && ref($vars) eq 'HASH') { + return $self->SUPER::render(@_); + } + else { + return $self->SUPER::render($name, { '.' => $vars }); + } +} + 1; diff --git a/lib/Text/Xslate/Syntax/Handlebars.pm b/lib/Text/Xslate/Syntax/Handlebars.pm index 69a20c6..4ea5f52 100644 --- a/lib/Text/Xslate/Syntax/Handlebars.pm +++ b/lib/Text/Xslate/Syntax/Handlebars.pm @@ -210,6 +210,7 @@ sub init_symbols { $self->infix('/', 256, $self->can('led_dot')); $self->symbol('.')->set_nud($self->can('nud_dot')); + $self->symbol('this')->set_nud($self->can('nud_dot')); $self->symbol('#')->set_std($self->can('std_block')); $self->symbol('^')->set_std($self->can('std_block')); @@ -300,7 +301,7 @@ sub nud_dot { my $self = shift; my ($symbol) = @_; - return $symbol->clone(arity => 'variable'); + return $symbol->clone(arity => 'variable', id => '.'); } sub std_block { |