summaryrefslogtreecommitdiff
path: root/lib/Tree/Transform/XSLTish/Transformer.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Tree/Transform/XSLTish/Transformer.pm')
-rw-r--r--lib/Tree/Transform/XSLTish/Transformer.pm15
1 files changed, 14 insertions, 1 deletions
diff --git a/lib/Tree/Transform/XSLTish/Transformer.pm b/lib/Tree/Transform/XSLTish/Transformer.pm
index c6102a7..fd61ea6 100644
--- a/lib/Tree/Transform/XSLTish/Transformer.pm
+++ b/lib/Tree/Transform/XSLTish/Transformer.pm
@@ -36,9 +36,22 @@ has 'context_stack' => (
has 'engine' => (
is => 'ro',
isa => 'Tree::Transform::XSLTish::Engine',
- default => sub { Tree::XPathEngine->new() },
+ lazy => 1,
+ builder => '_build_engine',
);
+sub _build_engine {
+ my ($self)=@_;
+
+ if ($self->rules_package) {
+ my $factory=Tree::Transform::XSLTish::Utils::_engine_factory($self->rules_package);
+ if ($$factory) {
+ return $$factory->();
+ }
+ }
+ return Tree::XPathEngine->new();
+}
+
sub it { $_[0]->context->current_node }
sub transform {