From 521c79b58c41d08ca6d4db39b877d069867fb62d Mon Sep 17 00:00:00 2001 From: Gianni Ceccarelli Date: Wed, 18 Mar 2009 16:38:54 +0100 Subject: call by name --- lib/Tree/Transform.pm | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'lib/Tree/Transform.pm') 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; -- cgit v1.2.3