summaryrefslogtreecommitdiff
path: root/lib/Tree/Transform/XSLTish.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Tree/Transform/XSLTish.pm')
-rw-r--r--lib/Tree/Transform/XSLTish.pm29
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 {