From 2d6b0e4d2bfe6f69fc52021d274a9ded1b7cecf0 Mon Sep 17 00:00:00 2001 From: Gianni Ceccarelli Date: Wed, 18 Mar 2009 16:10:05 +0100 Subject: default rules --- lib/Tree/Transform.pm | 13 ++++++++++++- 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)]; +} -- cgit v1.2.3