diff options
author | Gianni Ceccarelli <dakkar@dechirico.(none)> | 2009-03-25 15:33:22 +0100 |
---|---|---|
committer | Gianni Ceccarelli <dakkar@dechirico.(none)> | 2009-03-25 15:33:22 +0100 |
commit | f9fce9e34a1750038eee3a858cfec018d8cdf6e5 (patch) | |
tree | 21d1d0d1d4b51cf7ba400b5519c6be7e416d5b97 /lib/Tree/Template/Declare.pm | |
download | Tree-Template-Declare-f9fce9e34a1750038eee3a858cfec018d8cdf6e5.tar.gz Tree-Template-Declare-f9fce9e34a1750038eee3a858cfec018d8cdf6e5.tar.bz2 Tree-Template-Declare-f9fce9e34a1750038eee3a858cfec018d8cdf6e5.zip |
initial stab at tree-building
Diffstat (limited to 'lib/Tree/Template/Declare.pm')
-rw-r--r-- | lib/Tree/Template/Declare.pm | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/lib/Tree/Template/Declare.pm b/lib/Tree/Template/Declare.pm new file mode 100644 index 0000000..372781b --- /dev/null +++ b/lib/Tree/Template/Declare.pm @@ -0,0 +1,52 @@ +package Tree::Template::Declare; +use strict; +use warnings; +use Sub::Exporter; +use Tree::DAG_Node::XPath; + +our $VERSION='0.1'; + +Sub::Exporter::setup_exporter({ + exports => [qw(tree node name attribs)], + groups => { + default => [qw(tree node name attribs)], + } +}); + +our $current_node; + +sub tree(&) { + local $current_node=undef; + my ($ret)=$_[0]->(); + #warn "returning @{[ $ret->name ]}\n"; + return $ret; +} + +sub node(&) { + my $node=Tree::DAG_Node::XPath->new(); + #warn "new node\n"; + { + local $current_node=$node; + $_[0]->(); + } + if ($current_node) { + #warn "adding to parent (@{[ $current_node->name ]})\n"; + $current_node->add_daughter($node); + } + return $node; +} + +sub name($) { + #warn "setting name ($_[0])\n"; + $current_node->name($_[0]); +} + +sub attribs { + my %attrs=@_; + #warn "setting attributes\n"; + $current_node->attributes(\%attrs); + return; +} + + +1; |