summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2012-10-03 12:08:14 -0500
committerJesse Luehrs <doy@tozt.net>2012-10-03 12:08:14 -0500
commitb80630cd6f48308c7fc987f036ecdfd97548016f (patch)
tree237a5c11c2239f154445e733b5bcf89890a5744f
parentdd17e9001091ce49528625ee46e2d0bc73423a7f (diff)
downloadtext-handlebars-b80630cd6f48308c7fc987f036ecdfd97548016f.tar.gz
text-handlebars-b80630cd6f48308c7fc987f036ecdfd97548016f.zip
allow sections to be field lookups too
-rw-r--r--lib/Text/Xslate/Syntax/Handlebars.pm17
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(