diff options
author | Gianni Ceccarelli <dakkar@dechirico.(none)> | 2009-03-19 12:56:38 +0100 |
---|---|---|
committer | Gianni Ceccarelli <dakkar@dechirico.(none)> | 2009-03-19 12:56:38 +0100 |
commit | 4b6abab465d1c759b6470a48d5cd5f302153e120 (patch) | |
tree | e3618cad590fb5a235c55d650406ecb8daf42642 /lib/Tree/Transform | |
parent | using Class::MOP instead of symbol table hackery (diff) | |
download | Tree-Transform-XSLTish-4b6abab465d1c759b6470a48d5cd5f302153e120.tar.gz Tree-Transform-XSLTish-4b6abab465d1c759b6470a48d5cd5f302153e120.tar.bz2 Tree-Transform-XSLTish-4b6abab465d1c759b6470a48d5cd5f302153e120.zip |
test coverage!
Diffstat (limited to 'lib/Tree/Transform')
-rw-r--r-- | lib/Tree/Transform/Transformer.pm | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/lib/Tree/Transform/Transformer.pm b/lib/Tree/Transform/Transformer.pm index a773f29..95448af 100644 --- a/lib/Tree/Transform/Transformer.pm +++ b/lib/Tree/Transform/Transformer.pm @@ -47,7 +47,10 @@ sub apply_rules { @nodes=$self->it->xpath_get_child_nodes(); }; - $self->enter(Tree::Transform::Context->new(node_list=>\@nodes)); + my $guard=Tree::Transform::ContextGuard->new + ($self, + Tree::Transform::Context->new(node_list=>\@nodes) + ); my @ret; for my $node (@nodes) { @@ -59,8 +62,6 @@ sub apply_rules { push @ret,$rule->{action}->($self); } - $self->leave; - return @ret; } @@ -167,5 +168,19 @@ sub rule_matches { return; } -__PACKAGE__->meta->make_immutable;no Moose;1; +__PACKAGE__->meta->make_immutable;no Moose; + +package Tree::Transform::ContextGuard; + +sub new { + my ($class,$trans,$context)=@_; + $trans->enter($context); + return bless {trans=>$trans},$class; +} + +sub DESTROY { + $_[0]->{trans}->leave(); +} + +1; __END__ |