summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/Text/Handlebars.pm4
-rw-r--r--lib/Text/Handlebars/Compiler.pm14
2 files changed, 12 insertions, 6 deletions
diff --git a/lib/Text/Handlebars.pm b/lib/Text/Handlebars.pm
index 29123be..4d0a137 100644
--- a/lib/Text/Handlebars.pm
+++ b/lib/Text/Handlebars.pm
@@ -133,10 +133,6 @@ sub default_functions {
return !$val;
}
},
- '(make_array)' => sub {
- my ($length) = @_;
- return [(undef) x $length];
- },
'(make_hash)' => sub {
my (%hash) = @_;
return \%hash;
diff --git a/lib/Text/Handlebars/Compiler.pm b/lib/Text/Handlebars/Compiler.pm
index 77c4726..d713fc1 100644
--- a/lib/Text/Handlebars/Compiler.pm
+++ b/lib/Text/Handlebars/Compiler.pm
@@ -127,11 +127,11 @@ sub _generate_block {
my $iterations = $self->make_ternary(
$self->call($node, '(is_falsy)', $name->clone),
- $self->call($node, '(make_array)', $self->parser->literal(1)),
+ $self->make_array($self->parser->literal(1)),
$self->make_ternary(
$self->is_array_ref($name->clone),
$name->clone,
- $self->call($node, '(make_array)', $self->parser->literal(1)),
+ $self->make_array($self->parser->literal(1)),
),
);
@@ -277,6 +277,16 @@ sub is_array_ref {
);
}
+sub make_array {
+ my $self = shift;
+ my (@contents) = @_;
+
+ return $self->parser->symbol('[')->clone(
+ arity => 'composer',
+ first => \@contents,
+ );
+}
+
__PACKAGE__->meta->make_immutable;
no Any::Moose;