From 5d1c22c9436077c5e3dede4abe55dbc8713a1e4c Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Fri, 28 Sep 2012 13:21:06 -0500 Subject: simplify --- lib/Text/Xslate/Syntax/Handlebars.pm | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/lib/Text/Xslate/Syntax/Handlebars.pm b/lib/Text/Xslate/Syntax/Handlebars.pm index 40aba9b..3f63f68 100644 --- a/lib/Text/Xslate/Syntax/Handlebars.pm +++ b/lib/Text/Xslate/Syntax/Handlebars.pm @@ -159,22 +159,30 @@ sub led_dot { my $self = shift; my ($symbol, $left) = @_; - my $token = $self->token; - if (!$self->is_valid_field($token)) { - $self->_unexpected("a field name", $token); - } - - my $dot = $symbol->clone( - arity => 'field', - first => $left, - second => $token->clone(arity => 'literal'), - ); + my $dot = $self->make_field_lookup($left, $self->token, $symbol); $self->advance; return $dot; } +sub make_field_lookup { + my $self = shift; + my ($var, $field, $dot) = @_; + + if (!$self->is_valid_field($field)) { + $self->_unexpected("a field name", $field); + } + + $dot ||= $self->symbol('.'); + + return $dot->clone( + arity => 'field', + first => $var, + second => $field->clone(arity => 'literal'), + ); +} + if (0) { require Devel::STDERR::Indent; my @stack; -- cgit v1.2.3-54-g00ecf