diff options
Diffstat (limited to 'lib/Tree/Transform/XSLTish/Transformer.pm')
-rw-r--r-- | lib/Tree/Transform/XSLTish/Transformer.pm | 15 |
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 { |