diff options
author | Gianni Ceccarelli <dakkar@dechirico.(none)> | 2009-03-18 16:10:05 +0100 |
---|---|---|
committer | Gianni Ceccarelli <dakkar@dechirico.(none)> | 2009-03-18 16:10:05 +0100 |
commit | 2d6b0e4d2bfe6f69fc52021d274a9ded1b7cecf0 (patch) | |
tree | a9ee6c4eaa068134dca9018b025cad6bf8f125bf | |
parent | passes the first test! (diff) | |
download | Tree-Transform-XSLTish-2d6b0e4d2bfe6f69fc52021d274a9ded1b7cecf0.tar.gz Tree-Transform-XSLTish-2d6b0e4d2bfe6f69fc52021d274a9ded1b7cecf0.tar.bz2 Tree-Transform-XSLTish-2d6b0e4d2bfe6f69fc52021d274a9ded1b7cecf0.zip |
default rules
-rw-r--r-- | lib/Tree/Transform.pm | 13 | ||||
-rw-r--r-- | t/01-basic.t | 30 |
2 files changed, 37 insertions, 6 deletions
diff --git a/lib/Tree/Transform.pm b/lib/Tree/Transform.pm index d130c3b..febd8e3 100644 --- a/lib/Tree/Transform.pm +++ b/lib/Tree/Transform.pm @@ -9,13 +9,24 @@ use Tree::Transform::Transformer; our $VERSION='0.1'; Sub::Exporter::setup_exporter({ - exports => [qw(tree_rule new_transformer)], + exports => [qw(tree_rule default_rules new_transformer)], groups => { default => [ 'tree_rule', + 'default_rules', 'new_transformer' => {-as => 'new'} ], } }); +sub default_rules { + my $store=Tree::Transform::Utils::_rules_store(scalar caller); + + push @{$store->{by_match}}, + {match=> '/',priority=>0,action=>sub { $_[0]->apply_rules } }, + {match=> '*',priority=>0,action=>sub { $_[0]->apply_rules } }, + ; + return; +} + sub tree_rule { my (%args)=validate(@_, { match => { type => SCALAR, optional => 1 }, diff --git a/t/01-basic.t b/t/01-basic.t index a6eb0ba..305b67b 100644 --- a/t/01-basic.t +++ b/t/01-basic.t @@ -14,6 +14,23 @@ package BasicTransform;{ } +package OtherTransform;{ + use Tree::Transform; + use strict; + use warnings; + + default_rules; + + tree_rule match => 'coso1', action => sub { + return 'coso1'; + }; + + tree_rule match => 'base/coso2', action => sub { + return 'coso2'; + } + +} + package main; use Test::Most qw(no_plan die); use strict; @@ -26,11 +43,14 @@ my $tree=Tree::DAG_Node::XPath->new(); $tree->name('base'); $tree->new_daughter->name("coso$_") for 1..5; +{ my $trans=BasicTransform->new(); - -#explain 'root children:',$tree->xpath_get_root_node->xpath_get_child_nodes; -#explain 'root children:',$trans->engine->findnodes('*',$tree); - my @results=$trans->transform($tree); - is_deeply \@results,[qw(root base coso1 coso2 coso3 coso4 coso5)]; +} + +{ +my $trans=OtherTransform->new(); +my @results=$trans->transform($tree); +is_deeply \@results,[qw(coso1 coso2)]; +} |