summaryrefslogtreecommitdiffstats
path: root/lib/Text/Xslate/Syntax/Handlebars.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Text/Xslate/Syntax/Handlebars.pm')
-rw-r--r--lib/Text/Xslate/Syntax/Handlebars.pm15
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