diff options
author | Jesse Luehrs <doy@tozt.net> | 2012-10-03 12:08:14 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2012-10-03 12:08:14 -0500 |
commit | b80630cd6f48308c7fc987f036ecdfd97548016f (patch) | |
tree | 237a5c11c2239f154445e733b5bcf89890a5744f | |
parent | dd17e9001091ce49528625ee46e2d0bc73423a7f (diff) | |
download | text-handlebars-b80630cd6f48308c7fc987f036ecdfd97548016f.tar.gz text-handlebars-b80630cd6f48308c7fc987f036ecdfd97548016f.zip |
allow sections to be field lookups too
-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( |