diff options
-rw-r--r-- | lib/Tree/Template/Declare.pm | 8 | ||||
-rw-r--r-- | t/06-code.t | 4 |
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; }; } |