summaryrefslogtreecommitdiff
path: root/lib/Tree/Transform.pm
diff options
context:
space:
mode:
authorGianni Ceccarelli <dakkar@dechirico.(none)>2009-03-18 16:38:54 +0100
committerGianni Ceccarelli <dakkar@dechirico.(none)>2009-03-18 16:38:54 +0100
commit521c79b58c41d08ca6d4db39b877d069867fb62d (patch)
tree0300019b0a13a81159381b1319f9698a409e4eb7 /lib/Tree/Transform.pm
parentinheritance (diff)
downloadTree-Transform-XSLTish-521c79b58c41d08ca6d4db39b877d069867fb62d.tar.gz
Tree-Transform-XSLTish-521c79b58c41d08ca6d4db39b877d069867fb62d.tar.bz2
Tree-Transform-XSLTish-521c79b58c41d08ca6d4db39b877d069867fb62d.zip
call by name
Diffstat (limited to 'lib/Tree/Transform.pm')
-rw-r--r--lib/Tree/Transform.pm12
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/Tree/Transform.pm b/lib/Tree/Transform.pm
index febd8e3..bf3d18b 100644
--- a/lib/Tree/Transform.pm
+++ b/lib/Tree/Transform.pm
@@ -5,6 +5,7 @@ use Sub::Exporter;
use Params::Validate ':all';
use Tree::Transform::Utils;
use Tree::Transform::Transformer;
+use Carp::Clan qw(^Tree::Transform);
our $VERSION='0.1';
@@ -36,12 +37,19 @@ sub tree_rule {
});
# TODO at least one of 'name' and 'match' must be specified
+ # TODO default priority mased on match
my $store=Tree::Transform::Utils::_rules_store(scalar caller);
- push @{$store->{by_match}},\%args;
+ if ($args{match}) {
+ push @{$store->{by_match}},\%args;
+ }
if ($args{name}) {
- push @{$store->{by_name}{$args{name}}},\%args;
+ if (exists $store->{by_name}{$args{name}}) {
+ carp "Duplicate rule named $args{name}, ignoring";
+ return;
+ }
+ $store->{by_name}{$args{name}}=\%args;
}
return;