summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGianni Ceccarelli <dakkar@dechirico.(none)>2009-03-18 16:10:05 +0100
committerGianni Ceccarelli <dakkar@dechirico.(none)>2009-03-18 16:10:05 +0100
commit2d6b0e4d2bfe6f69fc52021d274a9ded1b7cecf0 (patch)
treea9ee6c4eaa068134dca9018b025cad6bf8f125bf
parentpasses the first test! (diff)
downloadTree-Transform-XSLTish-2d6b0e4d2bfe6f69fc52021d274a9ded1b7cecf0.tar.gz
Tree-Transform-XSLTish-2d6b0e4d2bfe6f69fc52021d274a9ded1b7cecf0.tar.bz2
Tree-Transform-XSLTish-2d6b0e4d2bfe6f69fc52021d274a9ded1b7cecf0.zip
default rules
-rw-r--r--lib/Tree/Transform.pm13
-rw-r--r--t/01-basic.t30
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)];
+}