diff options
author | dakkar <dakkar@thenautilus.net> | 2009-04-18 15:26:50 +0200 |
---|---|---|
committer | dakkar <dakkar@thenautilus.net> | 2009-04-18 15:26:50 +0200 |
commit | 43217e6ce9a7cae817d391e9bb10a3410c88e6e2 (patch) | |
tree | 1b5c17afb8992385cfb973c9802a65bf10fc1a83 /lib/Tree/Transform/XSLTish | |
parent | documentation, and a few author-tests (diff) | |
download | Tree-Transform-XSLTish-43217e6ce9a7cae817d391e9bb10a3410c88e6e2.tar.gz Tree-Transform-XSLTish-43217e6ce9a7cae817d391e9bb10a3410c88e6e2.tar.bz2 Tree-Transform-XSLTish-43217e6ce9a7cae817d391e9bb10a3410c88e6e2.zip |
factories are inherited now, added test
Diffstat (limited to 'lib/Tree/Transform/XSLTish')
-rw-r--r-- | lib/Tree/Transform/XSLTish/Transformer.pm | 6 | ||||
-rw-r--r-- | lib/Tree/Transform/XSLTish/Utils.pm | 13 |
2 files changed, 9 insertions, 10 deletions
diff --git a/lib/Tree/Transform/XSLTish/Transformer.pm b/lib/Tree/Transform/XSLTish/Transformer.pm index c4ff53f..dae5821 100644 --- a/lib/Tree/Transform/XSLTish/Transformer.pm +++ b/lib/Tree/Transform/XSLTish/Transformer.pm @@ -44,9 +44,9 @@ sub _build_engine { my ($self)=@_; if ($self->rules_package) { - my $factory=Tree::Transform::XSLTish::Utils::_engine_factory($self->rules_package); - if ($$factory) { - return $$factory->(); + my $factory=$self->rules_package->can($Tree::Transform::XSLTish::Utils::ENGINE_FACTORY_NAME); + if ($factory) { + return $factory->(); } } return Tree::XPathEngine->new(); diff --git a/lib/Tree/Transform/XSLTish/Utils.pm b/lib/Tree/Transform/XSLTish/Utils.pm index bfb438c..770426f 100644 --- a/lib/Tree/Transform/XSLTish/Utils.pm +++ b/lib/Tree/Transform/XSLTish/Utils.pm @@ -14,15 +14,14 @@ sub _rules_store { return $pack->get_package_symbol($RULES_NAME); } -my $ENGINE_FACTORY_NAME='$_tree_transform_engine_factory'; +our $ENGINE_FACTORY_NAME='_tree_transform_engine_factory'; +my $ENGINE_FACTORY_NAME_WITH_SIGIL='&'.$ENGINE_FACTORY_NAME; -sub _engine_factory { - my $pack=Class::MOP::Class->initialize($_[0]); +sub _set_engine_factory { + my ($pack_name,$factory)=@_; + my $pack=Class::MOP::Class->initialize($pack_name); - if (! $pack->has_package_symbol($ENGINE_FACTORY_NAME) ) { - $pack->add_package_symbol($ENGINE_FACTORY_NAME,undef); - } - return $pack->get_package_symbol($ENGINE_FACTORY_NAME); + $pack->add_package_symbol($ENGINE_FACTORY_NAME_WITH_SIGIL,$factory); } |