summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Tree/Template/Declare.pm8
-rw-r--r--t/06-code.t4
2 files changed, 10 insertions, 2 deletions
diff --git a/lib/Tree/Template/Declare.pm b/lib/Tree/Template/Declare.pm
index c103615..356c2fd 100644
--- a/lib/Tree/Template/Declare.pm
+++ b/lib/Tree/Template/Declare.pm
@@ -64,11 +64,17 @@ sub _build_group {
local $current_node[0]=$node;
$_[0]->(caller_args(1));
}
- if ($current_node[0]) {
+ if ($current_node[0] && !defined(wantarray)) {
$builder->add_child_node($current_node[0],$node);
}
return $node;
},
+ attach_nodes => sub {
+ if ($current_node[0]) {
+ $builder->add_child_node($current_node[0],$_)
+ for @_;
+ }
+ },
name => sub ($) {
$builder->set_node_name($current_node[0],$_[0]);
return;
diff --git a/t/06-code.t b/t/06-code.t
index a24427d..959fce2 100644
--- a/t/06-code.t
+++ b/t/06-code.t
@@ -21,9 +21,11 @@ sub make_item {
sub make_list {
my (@items)=@_;
+ my @item_nodes=map {make_item(@$_)} @items;
+
return node {
name 'list';
- make_item(@$_) for @items;
+ attach_nodes @item_nodes;
};
}