diff options
author | Gianni Ceccarelli <dakkar@dechirico.(none)> | 2009-03-20 15:54:44 +0100 |
---|---|---|
committer | Gianni Ceccarelli <dakkar@dechirico.(none)> | 2009-03-20 15:54:44 +0100 |
commit | bd5e373db0ee7b496fe1827a767567f2f26064a8 (patch) | |
tree | 42ffbdfb4d73d414b53cc2f46f216e939c520bb0 /lib/Tree/Transform/XSLTish | |
parent | it's now possible to change the XPath engine for each transformer (diff) | |
download | Tree-Transform-XSLTish-bd5e373db0ee7b496fe1827a767567f2f26064a8.tar.gz Tree-Transform-XSLTish-bd5e373db0ee7b496fe1827a767567f2f26064a8.tar.bz2 Tree-Transform-XSLTish-bd5e373db0ee7b496fe1827a767567f2f26064a8.zip |
skip compatibility tests if required modules are not present
added LibXML test
Diffstat (limited to 'lib/Tree/Transform/XSLTish')
-rw-r--r-- | lib/Tree/Transform/XSLTish/Transformer.pm | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/lib/Tree/Transform/XSLTish/Transformer.pm b/lib/Tree/Transform/XSLTish/Transformer.pm index 8b06422..c6102a7 100644 --- a/lib/Tree/Transform/XSLTish/Transformer.pm +++ b/lib/Tree/Transform/XSLTish/Transformer.pm @@ -12,7 +12,7 @@ subtype 'Tree::Transform::XSLTish::Engine' => as 'Object' => where { my $object=$_; - for my $meth (qw(findnodes matches exists)) { + for my $meth (qw(findnodes)) { return unless $object->can($meth); } return 1; @@ -164,11 +164,19 @@ sub rule_matches { # XXX check the semantic my $base_node=$node; + + # this is a ugly hack + my $test_sub= ($node->can('isSameNode'))? + sub { grep { $node->isSameNode($_) } @_ } + : + sub { grep { "$node" eq "$_" } @_ }; + while ($base_node) { #warn "# Testing <$path> against @{[ $node ]} based on @{[ $base_node ]}"; - - if ($self->engine->matches($node,$path,$base_node)) { + my @selected_nodes=$self->engine->findnodes($path,$base_node); + #warn "# selected: @selected_nodes\n"; + if ($test_sub->(@selected_nodes)) { return 1; } |