package Tree::Template::Declare::DAG_Node;
use strict;
use warnings;
use Carp;
our $VERSION='0.6';
sub new {
my ($class,$node_class)=@_;
$node_class||='Tree::DAG_Node';
eval "require $node_class" or
croak "Can't load $node_class: $@";
return bless {nc=>$node_class},$class;
}
sub new_tree {
my ($self)=@_;
return bless [],'Tree::Template::Declare::DAG_Node::Tree';
}
sub finalize_tree {
my ($self,$tree)=@_;
return $tree->[0];
}
sub new_node {
my ($self)=@_;
return $self->{nc}->new();
}
sub add_child_node {
my ($self,$parent,$child)=@_;
if ($parent->isa('Tree::Template::Declare::DAG_Node::Tree')) {
push @{$parent},$child;
return $parent;
}
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)=@_;
my %all_attributes=(
%{$node->attributes},
%{$attrs},
);
return $node->attributes(\%all_attributes);
}
1;
__END__