package Tree::Transform;
use Moose;
use Sub::Exporter;
use Params::Validate ':all';
our $VERSION='0.1';
Sub::Exporter::setup_exporter({
exports => [qw(tree_rule new_transformer)],
groups => {
default => [ 'tree_rule',
'new_transformer' => {-as => 'new'} ],
}
});
sub _rules_store {
no strict 'refs';
if (!defined *{$_[0].'::_tree_transform_rules'}{HASH}) {
*{$_[0].'::_tree_transform_rules'}={};
}
return *{$_[0].'::_tree_transform_rules'}{HASH};
}
sub tree_rule {
my (%args)=validate(@_, {
match => { type => SCALAR, optional => 1 },
action => { type => CODEREF },
name => { type => SCALAR, optional => 1},
priority => { type => SCALAR, default => 1 },
});
my $store=_rules_store(scalar caller);
push @{$store->{by_match}},\%args;
if ($args{name}) {
push @{$store->{by_name}{$args{name}}},\%args;
}
return;
}
sub new_transformer {
}
__PACKAGE__->meta->make_immutable;no Moose;
__END__