diff options
Diffstat (limited to 'lib/Text/Xslate/Syntax/Handlebars.pm')
-rw-r--r-- | lib/Text/Xslate/Syntax/Handlebars.pm | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/Text/Xslate/Syntax/Handlebars.pm b/lib/Text/Xslate/Syntax/Handlebars.pm index 3537952..9bd1366 100644 --- a/lib/Text/Xslate/Syntax/Handlebars.pm +++ b/lib/Text/Xslate/Syntax/Handlebars.pm @@ -148,6 +148,7 @@ sub init_symbols { $self->prefix('/', 0)->is_block_end(1); $self->prefix('&', 0)->set_nud($self->can('nud_mark_raw')); + $self->prefix('..', 0)->set_nud($self->can('nud_uplevel')); } sub nud_name { @@ -290,6 +291,13 @@ sub nud_mark_raw { return $self->call('mark_raw', $self->expression(0)); } +sub nud_uplevel { + my $self = shift; + my ($symbol) = @_; + + return $symbol->clone(arity => 'variable'); +} + sub make_field_lookup { my $self = shift; my ($var, $field, $dot) = @_; @@ -307,6 +315,14 @@ sub make_field_lookup { ); } +sub is_valid_field { + my $self = shift; + my ($field) = @_; + + return 1 if $field->id eq '..'; + return $self->SUPER::is_valid_field(@_); +} + sub make_ternary { my $self = shift; my ($if, $then, $else) = @_; |