Update of /cvsroot/perl-xml/XML-LibXML-XPathContext
In directory sc8-pr-cvs1:/tmp/cvs-serv8650
Modified Files:
XPathContext.pm
Log Message:
Minor refactoring: move dublicated logic from find() and findnodes() to _guarded_find_call()
Index: XPathContext.pm
===================================================================
RCS file: /cvsroot/perl-xml/XML-LibXML-XPathContext/XPathContext.pm,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -d -r1.23 -r1.24
--- XPathContext.pm 30 Apr 2003 20:31:46 -0000 1.23
+++ XPathContext.pm 21 May 2003 09:15:57 -0000 1.24
@@ -20,20 +20,8 @@
sub findnodes {
my ($self, $xpath, $node) = @_;
- my @nodes;
- my $prev_node;
- if (ref($node)) {
- $prev_node=$self->getContextNode();
- $self->setContextNode($node);
- }
- $self->_enter;
- eval {
- @nodes = $self->_findnodes($xpath);
- };
- $self->_leave;
- $self->setContextNode($prev_node) if ref($node);
- if ($@) { die $@; }
+ my @nodes = $self->_guarded_find_call('_findnodes', $xpath, $node);
if (wantarray) {
return @nodes;
@@ -43,33 +31,42 @@
}
}
+sub find {
+ my ($self, $xpath, $node) = @_;
+ my ($type, @params);
+
+ ($type, @params) = $self->_guarded_find_call('_find', $xpath, $node);
+
+ if ($type) {
+ return $type->new(@params);
+ }
+ return undef;
+}
+
sub findvalue {
my $self = shift;
return $self->find(@_)->to_literal->value;
}
-sub find {
- my ($self, $xpath, $node) = @_;
- my ($type, @params);
+sub _guarded_find_call {
+ my ($self, $method, $xpath, $node) = @_;
my $prev_node;
if (ref($node)) {
- $prev_node=$self->getContextNode();
- $self->setContextNode($node);
+ $prev_node = $self->getContextNode();
+ $self->setContextNode($node);
}
$self->_enter;
+ my @ret;
eval {
- ($type, @params) = $self->_find($xpath);
+ @ret = $self->$method($xpath);
};
$self->_leave;
$self->setContextNode($prev_node) if ref($node);
- if ($@) { die $@; }
+ if ($@) { die $@; }
- if ($type) {
- return $type->new(@params);
- }
- return undef;
+ return @ret;
}
sub registerFunction {
|