diff options
Diffstat (limited to 'lib/Text/Xslate/Syntax/Handlebars.pm')
-rw-r--r-- | lib/Text/Xslate/Syntax/Handlebars.pm | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/lib/Text/Xslate/Syntax/Handlebars.pm b/lib/Text/Xslate/Syntax/Handlebars.pm index b58a716..b43fcd7 100644 --- a/lib/Text/Xslate/Syntax/Handlebars.pm +++ b/lib/Text/Xslate/Syntax/Handlebars.pm @@ -214,25 +214,24 @@ sub std_block { my $inverted = $symbol->id eq '^'; - if ($self->token->arity ne 'name') { - $self->_unexpected("block name", $self->token); + my $name = $self->expression(0); + if ($name->arity ne 'variable' && $name->arity ne 'field') { + $self->_unexpected("opening block name", $self->token); } - my $name = $self->token->nud($self); - $self->advance; $self->advance(';'); my $body = $self->statements; $self->advance('/'); + my $closing_name = $self->expression(0); - if ($self->token->arity ne 'name') { - $self->_unexpected("block name", $self->token); + if ($closing_name->arity ne 'variable' && $closing_name->arity ne 'field') { + $self->_unexpected("closing block name", $self->token); } - if ($self->token->id ne $name->id) { + if ($closing_name->id ne $name->id) { # XXX $self->_unexpected('/' . $name->id, $self->token); } - - $self->advance; + $self->advance(';'); my $iterations = $inverted ? ($self->make_ternary( |