From 6d3b76546c92f15aadc2a9c4b7568411e49ccfbe Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Mon, 8 Oct 2012 13:33:45 -0500 Subject: implement hash parameters for block helpers --- lib/Text/Handlebars/Compiler.pm | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'lib/Text/Handlebars/Compiler.pm') diff --git a/lib/Text/Handlebars/Compiler.pm b/lib/Text/Handlebars/Compiler.pm index 8c89b06..a358d2e 100644 --- a/lib/Text/Handlebars/Compiler.pm +++ b/lib/Text/Handlebars/Compiler.pm @@ -79,6 +79,37 @@ sub _generate_include { return $self->SUPER::_generate_include($node); } +sub _generate_call { + my $self = shift; + my ($node) = @_; + + if ($node->is_helper) { + my @args; + my @hash; + for my $arg (@{ $node->second }) { + if ($arg->arity eq 'pair') { + push @hash, $arg->first, $arg->second; + } + else { + push @args, $arg; + } + } + + my $parser = $self->parser; + + my $make_hash = $parser->symbol('(name)')->clone( + arity => 'name', + id => '(make_hash)', + line => $node->line, + ); + + push @{ $node->first->second }, $parser->call($make_hash, @hash); + $node->second(\@args); + } + + return $self->SUPER::_generate_call($node); +} + __PACKAGE__->meta->make_immutable; no Any::Moose; -- cgit v1.2.3-54-g00ecf