From 3aa97f35d6a363350e2c3c41c731c93721b348ac Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Thu, 4 Oct 2012 18:43:04 -0500 Subject: make {{this}} an alias to {{.}} and make them work at the top level --- lib/Text/Handlebars.pm | 24 ++++++++++++++++++++++++ lib/Text/Xslate/Syntax/Handlebars.pm | 3 ++- t/block-helper-builtins.t | 2 -- t/expressions.t | 16 ++++++++++++++++ 4 files changed, 42 insertions(+), 3 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 { diff --git a/t/block-helper-builtins.t b/t/block-helper-builtins.t index 338e067..9540b27 100644 --- a/t/block-helper-builtins.t +++ b/t/block-helper-builtins.t @@ -32,7 +32,6 @@ RENDERED "with helper" ); -{ local $TODO = "unimplemented"; local $SIG{__WARN__} = sub { }; render_ok( <<'TEMPLATE',