r10521 - in /branches/upstream/libxml-nodefilter-perl: ./ current/ current/Changes current/MANIFEST current/Makefile.PL current/NodeFilter.pm current/README current/t/ current/t/01basic.t current/test.pl
vdanjean at users.alioth.debian.org
vdanjean at users.alioth.debian.org
Sat Dec 1 12:34:22 UTC 2007
Author: vdanjean
Date: Sat Dec 1 12:34:22 2007
New Revision: 10521
URL: http://svn.debian.org/wsvn/?sc=1&rev=10521
Log:
[svn-inject] Installing original source of libxml-nodefilter-perl
Added:
branches/upstream/libxml-nodefilter-perl/
branches/upstream/libxml-nodefilter-perl/current/
branches/upstream/libxml-nodefilter-perl/current/Changes
branches/upstream/libxml-nodefilter-perl/current/MANIFEST
branches/upstream/libxml-nodefilter-perl/current/Makefile.PL
branches/upstream/libxml-nodefilter-perl/current/NodeFilter.pm
branches/upstream/libxml-nodefilter-perl/current/README
branches/upstream/libxml-nodefilter-perl/current/t/
branches/upstream/libxml-nodefilter-perl/current/t/01basic.t
branches/upstream/libxml-nodefilter-perl/current/test.pl
Added: branches/upstream/libxml-nodefilter-perl/current/Changes
URL: http://svn.debian.org/wsvn/branches/upstream/libxml-nodefilter-perl/current/Changes?rev=10521&op=file
==============================================================================
--- branches/upstream/libxml-nodefilter-perl/current/Changes (added)
+++ branches/upstream/libxml-nodefilter-perl/current/Changes Sat Dec 1 12:34:22 2007
@@ -1,0 +1,4 @@
+Revision history for Perl extension XML::NodeFilter.
+
+0.01 Wed Nov 6 2002
+ initial release
Added: branches/upstream/libxml-nodefilter-perl/current/MANIFEST
URL: http://svn.debian.org/wsvn/branches/upstream/libxml-nodefilter-perl/current/MANIFEST?rev=10521&op=file
==============================================================================
--- branches/upstream/libxml-nodefilter-perl/current/MANIFEST (added)
+++ branches/upstream/libxml-nodefilter-perl/current/MANIFEST Sat Dec 1 12:34:22 2007
@@ -1,0 +1,7 @@
+Changes
+Makefile.PL
+MANIFEST
+NodeFilter.pm
+README
+test.pl
+t/01basic.t
Added: branches/upstream/libxml-nodefilter-perl/current/Makefile.PL
URL: http://svn.debian.org/wsvn/branches/upstream/libxml-nodefilter-perl/current/Makefile.PL?rev=10521&op=file
==============================================================================
--- branches/upstream/libxml-nodefilter-perl/current/Makefile.PL (added)
+++ branches/upstream/libxml-nodefilter-perl/current/Makefile.PL Sat Dec 1 12:34:22 2007
@@ -1,0 +1,11 @@
+use ExtUtils::MakeMaker;
+# See lib/ExtUtils/MakeMaker.pm for details of how to influence
+# the contents of the Makefile that is written.
+WriteMakefile(
+ 'NAME' => 'XML::NodeFilter',
+ 'VERSION_FROM' => 'NodeFilter.pm', # finds $VERSION
+ 'PREREQ_PM' => {}, # e.g., Module::Name => 1.1
+ ($] >= 5.005 ? ## Add these new keywords supported since 5.005
+ (ABSTRACT_FROM => 'NodeFilter.pm', # retrieve abstract from module
+ AUTHOR => 'A. U. Thor <a.u.thor at a.galaxy.far.far.away>') : ()),
+);
Added: branches/upstream/libxml-nodefilter-perl/current/NodeFilter.pm
URL: http://svn.debian.org/wsvn/branches/upstream/libxml-nodefilter-perl/current/NodeFilter.pm?rev=10521&op=file
==============================================================================
--- branches/upstream/libxml-nodefilter-perl/current/NodeFilter.pm (added)
+++ branches/upstream/libxml-nodefilter-perl/current/NodeFilter.pm Sat Dec 1 12:34:22 2007
@@ -1,0 +1,594 @@
+#------------------------------------------------------------------------#
+package XML::NodeFilter;
+#------------------------------------------------------------------------#
+# $Id: NodeFilter.pm,v 1.1.1.1 2002/11/08 09:26:59 phish108 Exp $
+#------------------------------------------------------------------------#
+# (c) 2002 Christian Glahn <christian.glahn at uibk.ac.at> #
+# All rights reserved. #
+# #
+# This code is free software; you can redistribute it and/or #
+# modify it under the same terms as Perl itself. #
+# #
+#------------------------------------------------------------------------#
+
+#------------------------------------------------------------------------#
+# general settings #
+#------------------------------------------------------------------------#
+use 5.005;
+use strict;
+
+require Exporter;
+use vars qw( $VERSION @ISA %EXPORT_TAGS @EXPORT @EXPORT_OK
+ @FLAGNAMES %FLAGMAPPING);
+
+
+$VERSION = '0.01';
+
+ at ISA = qw(Exporter);
+
+#------------------------------------------------------------------------#
+# export information #
+#------------------------------------------------------------------------#
+
+%EXPORT_TAGS = (
+'results' => [ qw(
+ FILTER_DECLINED
+ FILTER_ACCEPT
+ FILTER_SKIP
+ FILTER_REJECT
+) ],
+'flags' => [ qw(
+ SHOW_ALL
+ SHOW_ELEMENT
+ SHOW_ATTRIBUTE
+ SHOW_TEXT
+ SHOW_CDATA_SECTION
+ SHOW_ENTITY_REFERENCE
+ SHOW_ENTITY
+ SHOW_PROCESSING_INSTRUCTION
+ SHOW_COMMENT
+ SHOW_DOCUMENT
+ SHOW_DOCUMENT_TYPE
+ SHOW_DOCUMENT_FRAGMENT
+ SHOW_NOTATION
+ SHOW_NONE
+) ],
+'all' => [ qw(
+ FILTER_DECLINED
+ FILTER_ACCEPT
+ FILTER_SKIP
+ FILTER_REJECT
+ SHOW_ALL
+ SHOW_ELEMENT
+ SHOW_ATTRIBUTE
+ SHOW_TEXT
+ SHOW_CDATA_SECTION
+ SHOW_ENTITY_REFERENCE
+ SHOW_ENTITY
+ SHOW_PROCESSING_INSTRUCTION
+ SHOW_COMMENT
+ SHOW_DOCUMENT
+ SHOW_DOCUMENT_TYPE
+ SHOW_DOCUMENT_FRAGMENT
+ SHOW_NOTATION
+ SHOW_NONE
+) ] );
+
+ at EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
+
+ at EXPORT = qw();
+
+#------------------------------------------------------------------------#
+# constants declaration #
+#------------------------------------------------------------------------#
+
+ at FLAGNAMES = qw(
+ SHOW_ELEMENT
+ SHOW_ATTRIBUTE
+ SHOW_TEXT
+ SHOW_CDATA_SECTION
+ SHOW_ENTITY_REFERENCE
+ SHOW_ENTITY
+ SHOW_PROCESSING_INSTRUCTION
+ SHOW_COMMENT
+ SHOW_DOCUMENT
+ SHOW_DOCUMENT_TYPE
+ SHOW_DOCUMENT_FRAGMENT
+ SHOW_NOTATION
+ );
+
+use constant FILTER_DECLINED => 0; # check what other filters say ...
+use constant FILTER_ACCEPT => 1;
+use constant FILTER_SKIP => 2;
+use constant FILTER_REJECT => 3;
+
+use constant SHOW_ALL => 0xFFFFFFFF;
+use constant SHOW_ELEMENT => 0x00000001;
+use constant SHOW_ATTRIBUTE => 0x00000002;
+use constant SHOW_TEXT => 0x00000004;
+use constant SHOW_CDATA_SECTION => 0x00000008;
+use constant SHOW_ENTITY_REFERENCE => 0x00000010;
+use constant SHOW_ENTITY => 0x00000020;
+use constant SHOW_PROCESSING_INSTRUCTION => 0x00000040;
+use constant SHOW_COMMENT => 0x00000080;
+use constant SHOW_DOCUMENT => 0x00000100;
+use constant SHOW_DOCUMENT_TYPE => 0x00000200;
+use constant SHOW_DOCUMENT_FRAGMENT => 0x00000400;
+use constant SHOW_NOTATION => 0x00000800;
+
+# why are specs always incomplete regarding the NULL set???
+use constant SHOW_NONE => 0x00000000;
+
+ at FLAGMAPPING{@FLAGNAMES} = (SHOW_ELEMENT,
+ SHOW_ATTRIBUTE,
+ SHOW_TEXT,
+ SHOW_CDATA_SECTION,
+ SHOW_ENTITY_REFERENCE,
+ SHOW_ENTITY,
+ SHOW_PROCESSING_INSTRUCTION,
+ SHOW_COMMENT,
+ SHOW_DOCUMENT,
+ SHOW_DOCUMENT_TYPE,
+ SHOW_DOCUMENT_FRAGMENT,
+ SHOW_NOTATION);
+
+#------------------------------------------------------------------------#
+# class constructor #
+#------------------------------------------------------------------------#
+sub new {
+ my $class = shift;
+ my %args = @_;
+ my $flags = SHOW_ALL;
+ if ( defined $args{WHAT_TO_SHOW} ) {
+ $flags = $args{WHAT_TO_SHOW};
+ delete $args{WHAT_TO_SHOW};
+ }
+ elsif ( defined $args{-show} ) {
+ $flags = $args{-show};
+ delete $args{-show};
+ }
+
+ my $self = bless \%args, $class;
+
+ $self->what_to_show( ref( $flags ) ? %{$flags} : $flags );
+
+ return $self;
+}
+
+#------------------------------------------------------------------------#
+# what_to_show #
+#------------------------------------------------------------------------#
+sub what_to_show {
+ my $self = shift;
+ my $mask = $self->{WHAT_TO_SHOW};
+
+ if ( my $n = scalar @_ ) {
+ if ( $n == 1) {
+ $mask = shift;
+ unless ( defined $mask ) {
+ $self->{WHAT_TO_SHOW} = SHOW_ALL;
+ $mask = SHOW_ALL;
+ }
+ }
+ elsif ( $n > 1 ) {
+ my %args = @_;
+ $mask= SHOW_NONE;
+
+ foreach ( keys %args ) {
+ if ( defined $FLAGMAPPING{$_}
+ and defined $args{$_}
+ and $args{$_} ){
+ $mask |= $FLAGMAPPING{$_};
+ }
+ }
+
+ if ( defined $args{SHOW_ALL} ) {
+ $mask = SHOW_ALL;
+ }
+
+ }
+
+ $self->{WHAT_TO_SHOW} = $mask;
+ }
+
+ if ( wantarray ) {
+ my %retval = ();
+
+ @retval{@FLAGNAMES} = map { $mask & $_ ? "1" : "0" } (
+ SHOW_ELEMENT,
+ SHOW_ATTRIBUTE,
+ SHOW_TEXT,
+ SHOW_CDATA_SECTION,
+ SHOW_ENTITY_REFERENCE,
+ SHOW_ENTITY,
+ SHOW_PROCESSING_INSTRUCTION,
+ SHOW_COMMENT,
+ SHOW_DOCUMENT,
+ SHOW_DOCUMENT_TYPE,
+ SHOW_DOCUMENT_FRAGMENT,
+ SHOW_NOTATION
+ );
+ return %retval;
+ }
+
+ return $mask;
+}
+
+#------------------------------------------------------------------------#
+# accept_node and acceptNode #
+#------------------------------------------------------------------------#
+# accept_node() will call acceptNode() on default. This allows a #
+# transparent implementation towards spec conformance. #
+# #
+# the default return value is FILTER_ACCEPT rather than FILTER_DECLINED, #
+# because FILTER_DECLINED was not specified #
+#------------------------------------------------------------------------#
+sub accept_node { my $s = shift; return $s->acceptNode( @_ ); }
+sub acceptNode { return FILTER_ACCEPT; }
+
+1;
+#------------------------------------------------------------------------#
+# Code End #
+#------------------------------------------------------------------------#
+__END__
+
+=head1 NAME
+
+XML::NodeFilter - Generic XML::NodeFilter Class
+
+=head1 SYNOPSIS
+
+ use XML::NodeFilter;
+
+ my $filter = XML::NodeFilter->new();
+
+ $your_iterator->set_filter( $filter );
+
+=head1 DESCRIPTION
+
+"Filters are objects that know how to "filter out" nodes. If a
+NodeIterator or a TreeWalker is given a NodeFilter, it applies the
+filter before it returns the next node. If the filter says to accept
+the node, the traversal logic returns it; otherwise, traversal looks
+for the next node and pretends that the node was rejected was not
+there."
+
+This definition is given by the DOM Traversal and Range
+Specification. It explains pretty well, what this class is for: A
+XML::NodeFilter will recieve a node from a traversal object, such as
+XML::LibXML::Iterator is one and tells if the given node should be
+returned to the caller or not.
+
+Although I refere only to XML::LibXML here, XML::NodeFilter is
+implemented more open, so it can be used with other DOM
+implementations as well.
+
+=head2 The Spec And The Implementation
+
+The DOM Traversal and Range Specification just defines the contstants
+and accept_node() for a node filter. The XML::NodeFilter
+implementation also adds the what_to_show() function to the class
+definition, since I think that it is a filters job to decide which
+node-types should be shown and which not.
+
+Also XML::NodeFilter adds two constants which are not part of the
+specification. The first one is B<FILTER_DECLINED>. It tells the
+traversal logic, that it should apply another filter in order to
+decide if the node should be visible or not. While the spec only
+defines the traversal logic to have either one or no filter applied,
+it showed that it leads to cleaner code if more filter could be used
+in conjunktion. If a traversal logic finds a single filter that
+returns B<FILTER_DECLINED>, it should be handled as a synonym of
+B<FILTER_ACCEPT>. While B<FILTER_ACCEPT> is finite and would cause all
+other not to be executed, B<FILTER_DECLINED> gives one more
+flexibility.
+
+The second extension of the specification is the B<SHOW_NONE>
+symbol. It was added for operational completeness, so one can
+explicitly switch the node type filter off (means all node types are
+rejected). This will cause the two calls of what_to_show have a
+different result:
+
+ $filter->what_to_show( undef ); # will set SHOW_ALL
+ $filter->what_to_show( SHOW_NONE ); # will not set SHOW_ALL
+
+Infact B<SHOW_NONE> is a NULL flag, that means it can be added to any
+list of flags without altering it.
+
+ $filter->what_to_show( SHOW_ELEMENT | SHOW_TEXT | SHOW_NONE );
+
+is therefore identical to
+
+ $filter->what_to_show( SHOW_ELEMENT | SHOW_TEXT );
+
+B<SHOW_NONE> is espacially usefull to avoid numerically or even more ugly
+unintialized values while building such flag lists dynamically.
+
+=head2 How To write a Node Filter with XML::NodeFilter?
+
+Actually writing a node filter becomes very simple with
+XML::NodeFilter: Simply inherit your specialized node filter from
+XML::NodeFilter and implement your implement the function
+accept_node(). This name is more perlish than the name given by the
+specification. If your implementation needs to stay very close to the
+specification, you can alternativly implement
+acceptNode(). Implementing both functions makes no sense, since
+accept_node() should be prefered by the traversal logic. Because of
+this acceptNode() will only be called if no accept_node()
+implementation was given.
+
+Example:
+
+ package My::NodeFilter;
+
+ use XML::NodeFilter qw(:results);
+ use vars qw(@ISA);
+ @ISA = qw(XML::NodeFilter);
+
+ use XML::LibXML::Common;
+
+ sub accept_node {
+ my $filter = shift;
+ my $node = shift;
+
+ unless ( $node->getNodeType == ELEMENT_NODE
+ and defined $node->getNamespaceURI ) {
+ # ignore node without a defined namespace
+ return FILTER_REJECT;
+ }
+ return FILTER_DECLINED;
+ }
+
+ 1;
+
+This example shows a simple nodefilter that will reject any element
+without a namespace defined. Note that FILTER_DECLINED is returned if
+the node was not rejected. This allows a traversal logic to apply
+another filter on the nodes with a namespace defined. If your
+application needs to use different filters on the namespaced elements
+depending on the state where you want to traverse your DOM but you
+need allways to ignore elements without a namespace such a filter will
+enshure that you need not to add redundant code to your filter or even
+to choose a base class.
+
+=head2 How To make use of a XML::NodeFilter Filter?
+
+If you need to write some traversal code yourself, you should call the
+node filters accept_node() function to test if the logic should return
+the current node. A node is not returned if any filter retunrs
+FILTER_SKIP or FILTER_REJECT. In this case you need to reinvoke your
+traversal code.
+
+The following code snippet shows how you can make use of
+XML::NodeFilter in your traversal logic:
+
+ use XML::NodeFilter qw(:results);
+
+ #...
+ sub traversal_logic {
+ my $refnode = shift;
+ my @filters = @_;
+ my $node = undef;
+
+ TRAVERSE: while (1) {
+ my $state = FILTER_DECLINED;
+ # your traversal logic
+ # ...
+ last TRAVERSE unless defined $node;
+ FILTER: foreach my $filter ( @filters ) {
+ $state = $filter->accept_node($node);
+ last TRAVERSE if $state == FILTER_ACCEPT;
+ last FILTER unless $state == FILTER_DECLINED;
+ last TRAVERSE if $state == FILTER_DECLINED;
+ }
+
+ return $node;
+ }
+
+As you see the traversal code will call only accept_node() on each
+filter. Still this will work fine with filters, that have acceptNode()
+implemented: XML::NodeFilter calls acceptNode() if the original
+accept_node() function is called. This ashures that filters that use
+function names conform to the specification will work as well.
+
+Note that XML::NodeFilter uses as default return value of
+accept_node() FILTER_ACCEPT rather than FILTER_DECLINED. This is done
+so you can write 100% specification conform traversal and filter
+logic.
+
+=head2 Functions
+
+=over 4
+
+=item new()
+
+As the constructor of this class it accepts some parameters in form of
+a hash. This parameter hash will be blessed into a hash reference. The
+only parameter used by the class itself is B<-show>. This parameter
+may hold a bitmask of node filter flags as described below or a hash
+reference containing the same information.
+
+If B<-show> is ommited SHOW_ALL is assumed as default.
+
+=item what_to_show()
+
+This function is added to the filter class, rather than assuming it is
+available directly from within a traversal logic. what_to_show() takes
+either a bitmask or a hash that holds the information what nodes
+should be filtered.
+
+If what_to_show() is called without any parameter, it simply returns
+the bitmaks in scalar context; if called in array context it returns a
+hash containing the corresponding information: If a bit is set in the
+bitmask the corresponding key has the value 1; otherwise it has the
+value 0.
+
+=item accept_node()
+
+This function is used to tell a calling traversal function if a given
+node should be returned to the caller or should be skipped. It has
+four possible return values:
+
+FILTER_DECLINED to indicate that the filter itself would accept if no
+other (less significant) filters rejects or skips it. B<NOTE>
+FILTER_DECLINED is not defined by the spec.
+
+FILTER_ACCEPT to indicate that a node is accepted regardless what
+other filters may indicate.
+
+FILTER_SKIP to indicate a node is skipped, but its descendants should
+be still available.
+
+FILTER_REJECT to indicate a node and all its descendants should be
+skipped by the traversal logic.
+
+By default accept_node() returns FILTER_ACCEPT.
+
+=item acceptNode()
+
+Alternative function for accept_node(). This is only available for
+spec conformance. Any traversal logic should request
+accept_node(). Node filter implementations may choose either to
+implement accept_node() or acceptNode(). Implmenting both makes no
+sense at all!
+
+=back
+
+=head2 Constants
+
+=over 4
+
+=item * FILTER_DECLINED (0)
+
+Additional symbol to allow stacked node filters.
+
+=item * FILTER_ACCEPT (1)
+
+Defined by the specification
+
+=item * FILTER_SKIP (2)
+
+Defined by the specification
+
+=item * FILTER_REJECT (3)
+
+Defined by the specification
+
+=item * SHOW_ALL
+
+Defined by the specification
+
+=item * SHOW_ELEMENT
+
+Defined by the specification
+
+=item * SHOW_ATTRIBUTE
+
+Defined by the specification
+
+=item * SHOW_TEXT
+
+Defined by the specification
+
+=item * SHOW_CDATA_SECTION
+
+Defined by the specification
+
+=item * SHOW_ENTITY_REFERENCE
+
+Defined by the specification
+
+=item * SHOW_ENTITY
+
+Defined by the specification
+
+=item * SHOW_PROCESSING_INSTRUCTION
+
+Defined by the specification
+
+=item * SHOW_COMMENT
+
+Defined by the specification
+
+=item * SHOW_DOCUMENT
+
+Defined by the specification
+
+=item * SHOW_DOCUMENT_TYPE
+
+Defined by the specification
+
+=item * SHOW_DOCUMENT_FRAGMENT
+
+Defined by the specification
+
+=item * SHOW_NOTATION
+
+Defined by the specification
+
+=item * SHOW_NONE
+
+Additional symbol to indicate a NULL filter. This is for operational
+completeness.
+
+=item * @FLAGNAMES
+
+Contains the names of the FLAGS used by what_to_show(). The combining
+symbols SHOW_ALL and SHOW_NONE are not included by this list.
+
+=item * %FLAGMAPPING
+
+This hash mapps flagnames (as listed by @FLAGNAMES) to their
+predefined values. The combining symbols SHOW_ALL and SHOW_NONE are
+not included by this list.
+
+B<NOTE:> @FLAGNAMES and %FALGMAPPING are not exported. To make use of
+them you have to use the fully quallified namespace as follows
+
+ # gives the value of the SHOW_ELEMENT.
+ my $flag = $XML::NodeFilter::FLAGMAPPING{SHOW_ELEMENT};
+
+=back
+
+=head1 EXPORTS
+
+XML::NodeFilter will not export any symbols at all. Instead it gives
+two tags: ':results' and ':flags'.
+
+=over 4
+
+=item :results
+
+This tag exports the FILTER_* constants. This is usefull to avoid
+hardcoded numerical values within the filter code or the traversal
+logic. These symbols are used by accept_node() and are required to
+indicate the state
+
+=item :flags
+
+Exports SHOW_* flags. Import these symbols if what_to_show() should be
+used conform to the specification rather than using named parameters.
+
+=back
+
+Alternativly you might import ':all' to get all symbols exported by
+both of the tags just described.
+
+=head1 AUTHOR
+
+Christian Glahn, E<lt>christian.glahn at uibk.ac.atE<gt>
+
+=head1 SEE ALSO
+
+L<perl>, L<XML::LibXML::Iterator>, L<XML::LibXML::NodeFilter>
+
+W3C DOM Level 2 Traversal and Range Specification
+
+=head1 COPYRIGHT AND LICENSE
+
+(c) 2002, Christian Glahn. All rights reserved.
+
+This package is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+=cut
Added: branches/upstream/libxml-nodefilter-perl/current/README
URL: http://svn.debian.org/wsvn/branches/upstream/libxml-nodefilter-perl/current/README?rev=10521&op=file
==============================================================================
--- branches/upstream/libxml-nodefilter-perl/current/README (added)
+++ branches/upstream/libxml-nodefilter-perl/current/README Sat Dec 1 12:34:22 2007
@@ -1,0 +1,29 @@
+XML::NodeFilter version 0.01
+============================
+
+XML::NodeFilter is a generic node-filter class for DOM traversal as
+specified in the DOM Level 2 Traversal and Range specification. It
+extends that specification so this class is more easy to use for perl
+programmers.
+
+INSTALLATION
+
+To install this module type the following:
+
+ perl Makefile.PL
+ make
+ make test
+ make install
+
+DEPENDENCIES
+
+This modulehas no dependencies.
+
+COPYRIGHT AND LICENCE
+
+Copyright (C) 2002 Christian Glahn. All rights reserved.
+
+This package is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+
Added: branches/upstream/libxml-nodefilter-perl/current/t/01basic.t
URL: http://svn.debian.org/wsvn/branches/upstream/libxml-nodefilter-perl/current/t/01basic.t?rev=10521&op=file
==============================================================================
--- branches/upstream/libxml-nodefilter-perl/current/t/01basic.t (added)
+++ branches/upstream/libxml-nodefilter-perl/current/t/01basic.t Sat Dec 1 12:34:22 2007
@@ -1,0 +1,56 @@
+use Test;
+BEGIN { plan tests => 29 }
+
+use XML::NodeFilter qw(:all);
+
+
+# simple construction
+my $filter = XML::NodeFilter->new();
+ok($filter);
+
+ok( $filter->what_to_show, SHOW_ALL );
+
+my %show = $filter->what_to_show;
+
+map { ok( $show{$_} == 1 ? 1 : 0 ) } ( keys %show );
+
+$filter->what_to_show( SHOW_ELEMENT => 1, SHOW_TEXT => 1 );
+
+%show = $filter->what_to_show;
+map { ok(1) if $show{$_} == 1 } ( keys %show );
+
+$filter->what_to_show( undef );
+ok( $filter->what_to_show, SHOW_ALL );
+
+$filter->what_to_show( SHOW_NONE );
+ok( $filter->what_to_show, SHOW_NONE );
+
+
+$filter->what_to_show( SHOW_ELEMENT | SHOW_TEXT );
+
+my $showme = $filter->what_to_show;
+%show = $filter->what_to_show;
+map { ok(1) if $show{$_} == 1 } ( keys %show );
+
+$filter->what_to_show( SHOW_ELEMENT | SHOW_TEXT | SHOW_NONE );
+
+%show = $filter->what_to_show;
+map { ok(1) if $show{$_} == 1 } ( keys %show );
+
+my $tv = $filter->what_to_show;
+ok( $tv, $showme );
+
+ok( $filter->accept_node(), FILTER_ACCEPT );
+ok( $filter->acceptNode(), FILTER_ACCEPT );
+
+my $filter2 = XML::NodeFilter->new( -show => SHOW_ELEMENT | SHOW_TEXT );
+$tv = $filter2->what_to_show;
+ok( $tv, $showme );
+ok( not defined $filter2->{-show} );
+
+my $filter3 = XML::NodeFilter->new( -show => {SHOW_ELEMENT=>1, SHOW_TEXT=>1} );
+
+$tv = $filter3->what_to_show;
+ok( $tv, $showme );
+ok( not defined $filter3->{-show} );
+
Added: branches/upstream/libxml-nodefilter-perl/current/test.pl
URL: http://svn.debian.org/wsvn/branches/upstream/libxml-nodefilter-perl/current/test.pl?rev=10521&op=file
==============================================================================
--- branches/upstream/libxml-nodefilter-perl/current/test.pl (added)
+++ branches/upstream/libxml-nodefilter-perl/current/test.pl Sat Dec 1 12:34:22 2007
@@ -1,0 +1,17 @@
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl test.pl'
+
+#########################
+
+# change 'tests => 1' to 'tests => last_test_to_print';
+
+use Test;
+BEGIN { plan tests => 1 };
+use XML::NodeFilter;
+ok(1); # If we made it this far, we're ok.
+
+#########################
+
+# Insert your test code below, the Test module is use()ed here so read
+# its man page ( perldoc Test ) for help writing this test script.
+
More information about the Pkg-perl-cvs-commits
mailing list