diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Text/Xslate/Syntax/Handlebars.pm | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/Text/Xslate/Syntax/Handlebars.pm b/lib/Text/Xslate/Syntax/Handlebars.pm index dd543dc..fe2f083 100644 --- a/lib/Text/Xslate/Syntax/Handlebars.pm +++ b/lib/Text/Xslate/Syntax/Handlebars.pm @@ -553,10 +553,25 @@ sub define_function { return; } +sub parse_literal { + my $self = shift; + my ($literal) = @_; + + if ($literal =~ /\A\[(.*)\]\z/ms) { + $literal = $1; + $literal =~ s/(["\\])/\\$1/g; + $literal = '"' . $literal . '"'; + } + + return $self->SUPER::parse_literal($literal); +} + sub is_valid_field { my $self = shift; my ($field) = @_; + # allow foo.[10] + return 1 if $field->arity eq 'literal'; # undefined symbols are all treated as variables - see undefined_name return 1 if $field->arity eq 'variable'; # allow ../../foo |