summaryrefslogtreecommitdiff
path: root/lib/Tree/Template/Declare/DAG_Node.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Tree/Template/Declare/DAG_Node.pm')
-rw-r--r--lib/Tree/Template/Declare/DAG_Node.pm40
1 files changed, 40 insertions, 0 deletions
diff --git a/lib/Tree/Template/Declare/DAG_Node.pm b/lib/Tree/Template/Declare/DAG_Node.pm
new file mode 100644
index 0000000..c005752
--- /dev/null
+++ b/lib/Tree/Template/Declare/DAG_Node.pm
@@ -0,0 +1,40 @@
+package Tree::Template::Declare::DAG_Node;
+use strict;
+use warnings;
+use Carp;
+
+sub new {
+ my ($class,$node_class)=@_;
+ $node_class||='Tree::DAG_Node';
+
+ eval "require $node_class";
+ croak "Can't load $node_class: $@" if $@;
+
+ return bless {nc=>$node_class},$class;
+}
+
+sub new_node {
+ my ($self)=@_;
+
+ return $self->{nc}->new();
+}
+
+sub add_child_node {
+ my ($self,$parent,$child)=@_;
+
+ return $parent->add_daughter($child);
+}
+
+sub set_node_name {
+ my ($self,$node,$name)=@_;
+
+ return $node->name($name);
+}
+
+sub set_node_attributes {
+ my ($self,$node,$attrs)=@_;
+
+ return $node->attributes($attrs);
+}
+
+1;