diff options
Diffstat (limited to 'lib/Tree/Transform/XSLTish.pm')
-rw-r--r-- | lib/Tree/Transform/XSLTish.pm | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/lib/Tree/Transform/XSLTish.pm b/lib/Tree/Transform/XSLTish.pm index 3889b3a..97a6f1f 100644 --- a/lib/Tree/Transform/XSLTish.pm +++ b/lib/Tree/Transform/XSLTish.pm @@ -9,12 +9,15 @@ use Carp::Clan qw(^Tree::Transform::XSLTish); our $VERSION='0.1'; +my @DEFAULT_EXPORTS=('tree_rule', + 'default_rules', + 'new_transformer' => {-as => 'new'}); + Sub::Exporter::setup_exporter({ - exports => [qw(tree_rule default_rules new_transformer)], + exports => [qw(tree_rule default_rules new_transformer engine_class engine_factory)], groups => { - default => [ 'tree_rule', - 'default_rules', - 'new_transformer' => {-as => 'new'} ], + default => \@DEFAULT_EXPORTS, + engine => [@DEFAULT_EXPORTS, qw(engine_class engine_factory)], } }); @@ -55,6 +58,24 @@ sub tree_rule { return; } +sub engine_class { + my ($classname)=@_; + + my $factory=Tree::Transform::XSLTish::Utils::_engine_factory(scalar caller); + $$factory=sub{$classname->new()}; + + return; +} + +sub engine_factory { + my ($new_factory)=@_; + + my $factory=Tree::Transform::XSLTish::Utils::_engine_factory(scalar caller); + $$factory=$new_factory; + + return; +} + sub _transformer_class { 'Tree::Transform::XSLTish::Transformer' }; sub new_transformer { |