summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/Text/Handlebars.pm19
1 files changed, 6 insertions, 13 deletions
diff --git a/lib/Text/Handlebars.pm b/lib/Text/Handlebars.pm
index d104003..2e4770f 100644
--- a/lib/Text/Handlebars.pm
+++ b/lib/Text/Handlebars.pm
@@ -131,20 +131,13 @@ sub default_functions {
'(new_vars_for)' => sub {
my ($vars, $value, $i) = @_;
- if (my $ref = ref($value)) {
- if (defined $ref && $ref eq 'ARRAY') {
- die "no iterator cycle provided?"
- unless defined $i;
-
- $value = ref($value->[$i]) && ref($value->[$i]) eq 'HASH'
- ? { '.' => $value->[$i], %{ $value->[$i] } }
- : { '.' => $value->[$i] };
-
- $ref = ref($value);
- }
-
- return $vars unless $ref && $ref eq 'HASH';
+ if (ref($value) eq 'ARRAY') {
+ $value = ref($value->[$i]) eq 'HASH'
+ ? { '.' => $value->[$i], %{ $value->[$i] } }
+ : { '.' => $value->[$i] };
+ }
+ if (ref($value) eq 'HASH') {
weaken(my $vars_copy = $vars);
return {
'@index' => $i,