Accepting request 53033 from home:jnweiger:perl
tested ok, mine OBS-URL: https://build.opensuse.org/request/show/53033 OBS-URL: https://build.opensuse.org/package/show/devel:languages:perl/perl-XML-TreeBuilder?expand=0&rev=1
This commit is contained in:
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
## Default LFS
|
||||||
|
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.png filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.zst filter=lfs diff=lfs merge=lfs -text
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
.osc
|
3
XML-TreeBuilder-3.09.tar.bz2
Normal file
3
XML-TreeBuilder-3.09.tar.bz2
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:41c9e44c2ceb745b97a5f2c9a225fd51ed309e65f234b27a719ef83ec7a15f11
|
||||||
|
size 6440
|
275
XML-TreeBuilder-NoExpand.patch
Normal file
275
XML-TreeBuilder-NoExpand.patch
Normal file
@@ -0,0 +1,275 @@
|
|||||||
|
---
|
||||||
|
Changes | 7 ++
|
||||||
|
lib/XML/TreeBuilder.pm | 116 +++++++++++++++++++++++++++++++++----------------
|
||||||
|
t/10main.t | 26 +++++++++-
|
||||||
|
3 files changed, 108 insertions(+), 41 deletions(-)
|
||||||
|
|
||||||
|
Index: XML-TreeBuilder-3.09/Changes
|
||||||
|
===================================================================
|
||||||
|
--- XML-TreeBuilder-3.09.orig/Changes
|
||||||
|
+++ XML-TreeBuilder-3.09/Changes
|
||||||
|
@@ -1,5 +1,10 @@
|
||||||
|
-# Time-stamp: "2004-06-10 20:28:41 ADT"
|
||||||
|
+2009-16-03 Jeff Fearn <jfearn@redhat.com>
|
||||||
|
|
||||||
|
+ Release 3.09.x
|
||||||
|
+
|
||||||
|
+ Added NoExpand option to allow entities to be left untouched in xml.
|
||||||
|
+ Added ErrorContext option to allow better reporting of error locations.
|
||||||
|
+ Expanded tests to test these options.
|
||||||
|
|
||||||
|
2004-06-10 Sean M. Burke <sburke@cpan.org>
|
||||||
|
|
||||||
|
Index: XML-TreeBuilder-3.09/lib/XML/TreeBuilder.pm
|
||||||
|
===================================================================
|
||||||
|
--- XML-TreeBuilder-3.09.orig/lib/XML/TreeBuilder.pm
|
||||||
|
+++ XML-TreeBuilder-3.09/lib/XML/TreeBuilder.pm
|
||||||
|
@@ -5,6 +5,7 @@ package XML::TreeBuilder;
|
||||||
|
use strict;
|
||||||
|
use XML::Element ();
|
||||||
|
use XML::Parser ();
|
||||||
|
+use Carp;
|
||||||
|
use vars qw(@ISA $VERSION);
|
||||||
|
|
||||||
|
$VERSION = '3.09';
|
||||||
|
@@ -12,8 +13,15 @@ $VERSION = '3.09';
|
||||||
|
|
||||||
|
#==========================================================================
|
||||||
|
sub new {
|
||||||
|
- my $class = ref($_[0]) || $_[0];
|
||||||
|
- # that's the only parameter it knows
|
||||||
|
+ my ( $this, $arg ) = @_;
|
||||||
|
+ my $class = ref($this) || $this;
|
||||||
|
+
|
||||||
|
+ my $NoExpand = ( delete $arg->{'NoExpand'} || undef );
|
||||||
|
+ my $ErrorContext = ( delete $arg->{'ErrorContext'} || undef );
|
||||||
|
+
|
||||||
|
+ if ( %{$arg} ) {
|
||||||
|
+ croak "unknown args: " . join( ", ", keys %{$arg} );
|
||||||
|
+ }
|
||||||
|
|
||||||
|
my $self = XML::Element->new('NIL');
|
||||||
|
bless $self, $class; # and rebless
|
||||||
|
@@ -21,57 +29,76 @@ sub new {
|
||||||
|
$self->{'_store_comments'} = 0;
|
||||||
|
$self->{'_store_pis'} = 0;
|
||||||
|
$self->{'_store_declarations'} = 0;
|
||||||
|
+ $self->{'NoExpand'} = $NoExpand if ($NoExpand);
|
||||||
|
+ $self->{'ErrorContext'} = $ErrorContext if ($ErrorContext);
|
||||||
|
|
||||||
|
my @stack;
|
||||||
|
+
|
||||||
|
# Compare the simplicity of this to the sheer nastiness of HTML::TreeBuilder!
|
||||||
|
|
||||||
|
- $self->{'_xml_parser'} = XML::Parser->new( 'Handlers' => {
|
||||||
|
+ $self->{'_xml_parser'} = XML::Parser->new(
|
||||||
|
+ 'Handlers' => {
|
||||||
|
+ 'Default' => sub {
|
||||||
|
+ if ( ( $self->{'NoExpand'} ) && ( $_[1] =~ /&.*\;/ ) ) {
|
||||||
|
+ $stack[-1]->push_content( $_[1] );
|
||||||
|
+ }
|
||||||
|
+ return;
|
||||||
|
+ },
|
||||||
|
'Start' => sub {
|
||||||
|
shift;
|
||||||
|
- if(@stack) {
|
||||||
|
+ if (@stack) {
|
||||||
|
push @stack, $self->{'_element_class'}->new(@_);
|
||||||
|
$stack[-2]->push_content( $stack[-1] );
|
||||||
|
- } else {
|
||||||
|
+ }
|
||||||
|
+ else {
|
||||||
|
$self->tag(shift);
|
||||||
|
- while(@_) { $self->attr(splice(@_,0,2)) };
|
||||||
|
+ while (@_) { $self->attr( splice( @_, 0, 2 ) ) }
|
||||||
|
push @stack, $self;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
'End' => sub { pop @stack; return },
|
||||||
|
|
||||||
|
- 'Char' => sub { $stack[-1]->push_content($_[1]) },
|
||||||
|
+ 'Char' => sub { $stack[-1]->push_content( $_[1] ) },
|
||||||
|
|
||||||
|
'Comment' => sub {
|
||||||
|
return unless $self->{'_store_comments'};
|
||||||
|
- (
|
||||||
|
- @stack ? $stack[-1] : $self
|
||||||
|
- )->push_content(
|
||||||
|
- $self->{'_element_class'}->new('~comment', 'text' => $_[1])
|
||||||
|
- );
|
||||||
|
+ ( @stack ? $stack[-1] : $self )
|
||||||
|
+ ->push_content( $self->{'_element_class'}
|
||||||
|
+ ->new( '~comment', 'text' => $_[1] ) );
|
||||||
|
return;
|
||||||
|
},
|
||||||
|
|
||||||
|
'Proc' => sub {
|
||||||
|
return unless $self->{'_store_pis'};
|
||||||
|
- (
|
||||||
|
- @stack ? $stack[-1] : $self
|
||||||
|
- )->push_content(
|
||||||
|
- $self->{'_element_class'}->new('~pi', 'text' => "$_[1] $_[2]")
|
||||||
|
- );
|
||||||
|
+ ( @stack ? $stack[-1] : $self )
|
||||||
|
+ ->push_content( $self->{'_element_class'}
|
||||||
|
+ ->new( '~pi', 'text' => "$_[1] $_[2]" ) );
|
||||||
|
return;
|
||||||
|
},
|
||||||
|
|
||||||
|
+ 'Final' => sub {
|
||||||
|
+ $self->root()->traverse(
|
||||||
|
+ sub {
|
||||||
|
+ my ( $node, $start ) = @_;
|
||||||
|
+ if ( ref $node ) { # it's an element
|
||||||
|
+ $node->attr( 'NoExpand', undef );
|
||||||
|
+ $node->attr( 'ErrorContext', undef );
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ );
|
||||||
|
+ },
|
||||||
|
+
|
||||||
|
# And now, declarations:
|
||||||
|
|
||||||
|
'Attlist' => sub {
|
||||||
|
return unless $self->{'_store_declarations'};
|
||||||
|
shift;
|
||||||
|
- (
|
||||||
|
- @stack ? $stack[-1] : $self
|
||||||
|
- )->push_content(
|
||||||
|
- $self->{'_element_class'}->new('~declaration',
|
||||||
|
- 'text' => join ' ', 'ATTLIST', @_
|
||||||
|
+ ( @stack ? $stack[-1] : $self )->push_content(
|
||||||
|
+ $self->{'_element_class'}->new(
|
||||||
|
+ '~declaration',
|
||||||
|
+ 'text' => join ' ',
|
||||||
|
+ 'ATTLIST', @_
|
||||||
|
)
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
@@ -80,11 +107,11 @@ sub new {
|
||||||
|
'Element' => sub {
|
||||||
|
return unless $self->{'_store_declarations'};
|
||||||
|
shift;
|
||||||
|
- (
|
||||||
|
- @stack ? $stack[-1] : $self
|
||||||
|
- )->push_content(
|
||||||
|
- $self->{'_element_class'}->new('~declaration',
|
||||||
|
- 'text' => join ' ', 'ELEMENT', @_
|
||||||
|
+ ( @stack ? $stack[-1] : $self )->push_content(
|
||||||
|
+ $self->{'_element_class'}->new(
|
||||||
|
+ '~declaration',
|
||||||
|
+ 'text' => join ' ',
|
||||||
|
+ 'ELEMENT', @_
|
||||||
|
)
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
@@ -93,32 +120,47 @@ sub new {
|
||||||
|
'Doctype' => sub {
|
||||||
|
return unless $self->{'_store_declarations'};
|
||||||
|
shift;
|
||||||
|
- (
|
||||||
|
- @stack ? $stack[-1] : $self
|
||||||
|
- )->push_content(
|
||||||
|
- $self->{'_element_class'}->new('~declaration',
|
||||||
|
- 'text' => join ' ', 'DOCTYPE', @_
|
||||||
|
+ ( @stack ? $stack[-1] : $self )->push_content(
|
||||||
|
+ $self->{'_element_class'}->new(
|
||||||
|
+ '~declaration',
|
||||||
|
+ 'text' => join ' ',
|
||||||
|
+ 'DOCTYPE', @_
|
||||||
|
)
|
||||||
|
);
|
||||||
|
return;
|
||||||
|
},
|
||||||
|
|
||||||
|
- });
|
||||||
|
+ 'Entity' => sub {
|
||||||
|
+ return unless $self->{'_store_declarations'};
|
||||||
|
+ shift;
|
||||||
|
+ ( @stack ? $stack[-1] : $self )->push_content(
|
||||||
|
+ $self->{'_element_class'}->new(
|
||||||
|
+ '~declaration',
|
||||||
|
+ 'text' => join ' ',
|
||||||
|
+ 'ENTITY', @_
|
||||||
|
+ )
|
||||||
|
+ );
|
||||||
|
+ return;
|
||||||
|
+ },
|
||||||
|
+ },
|
||||||
|
+ 'NoExpand' => $self->{'NoExpand'},
|
||||||
|
+ 'ErrorContext' => $self->{'ErrorContext'}
|
||||||
|
+ );
|
||||||
|
|
||||||
|
return $self;
|
||||||
|
}
|
||||||
|
#==========================================================================
|
||||||
|
sub _elem # universal accessor...
|
||||||
|
{
|
||||||
|
- my($self, $elem, $val) = @_;
|
||||||
|
+ my ( $self, $elem, $val ) = @_;
|
||||||
|
my $old = $self->{$elem};
|
||||||
|
$self->{$elem} = $val if defined $val;
|
||||||
|
return $old;
|
||||||
|
}
|
||||||
|
|
||||||
|
-sub store_comments { shift->_elem('_store_comments', @_); }
|
||||||
|
-sub store_declarations { shift->_elem('_store_declarations', @_); }
|
||||||
|
-sub store_pis { shift->_elem('_store_pis', @_); }
|
||||||
|
+sub store_comments { shift->_elem( '_store_comments', @_ ); }
|
||||||
|
+sub store_declarations { shift->_elem( '_store_declarations', @_ ); }
|
||||||
|
+sub store_pis { shift->_elem( '_store_pis', @_ ); }
|
||||||
|
|
||||||
|
#==========================================================================
|
||||||
|
|
||||||
|
Index: XML-TreeBuilder-3.09/t/10main.t
|
||||||
|
===================================================================
|
||||||
|
--- XML-TreeBuilder-3.09.orig/t/10main.t
|
||||||
|
+++ XML-TreeBuilder-3.09/t/10main.t
|
||||||
|
@@ -2,7 +2,7 @@
|
||||||
|
# Time-stamp: "2004-06-10 20:22:53 ADT"
|
||||||
|
|
||||||
|
use Test;
|
||||||
|
-BEGIN { plan tests => 3 }
|
||||||
|
+BEGIN { plan tests => 4 }
|
||||||
|
|
||||||
|
use XML::TreeBuilder;
|
||||||
|
|
||||||
|
@@ -29,8 +29,7 @@ my $y = XML::Element->new_from_lol(
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
-
|
||||||
|
-ok $x->same_as($y);
|
||||||
|
+ok($x->same_as($y));
|
||||||
|
|
||||||
|
unless( $ENV{'HARNESS_ACTIVE'} ) {
|
||||||
|
$x->dump;
|
||||||
|
@@ -45,6 +44,27 @@ unless( $ENV{'HARNESS_ACTIVE'} ) {
|
||||||
|
$x->delete;
|
||||||
|
$y->delete;
|
||||||
|
|
||||||
|
+$x = XML::TreeBuilder->new({ 'NoExpand' => "1", 'ErrorContext' => "2" });
|
||||||
|
+$x->store_comments(1);
|
||||||
|
+$x->store_pis(1);
|
||||||
|
+$x->store_declarations(1);
|
||||||
|
+$x->parse(
|
||||||
|
+ qq{<!-- myorp --><Gee><foo Id="me" xml:foo="lal">Hello World</foo>} .
|
||||||
|
+ qq{<lor/><!-- foo --></Gee><!-- glarg -->}
|
||||||
|
+);
|
||||||
|
+
|
||||||
|
+$y = XML::Element->new_from_lol(
|
||||||
|
+ ['Gee',
|
||||||
|
+ ['~comment', {'text' => ' myorp '}],
|
||||||
|
+ ['foo', {'Id'=> 'me', 'xml:foo' => 'lal'}, 'Hello World'],
|
||||||
|
+ ['lor'],
|
||||||
|
+ ['~comment', {'text' => ' foo '}],
|
||||||
|
+ ['~comment', {'text' => ' glarg '}],
|
||||||
|
+ ]
|
||||||
|
+);
|
||||||
|
+
|
||||||
|
+ok($x->same_as($y));
|
||||||
|
+
|
||||||
|
ok 1;
|
||||||
|
print "# Bye from ", __FILE__, "\n";
|
||||||
|
|
13
perl-XML-TreeBuilder.changes
Normal file
13
perl-XML-TreeBuilder.changes
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Sun Nov 14 22:43:18 UTC 2010 - jw@novell.com
|
||||||
|
|
||||||
|
- added XML-TreeBuilder-NoExpand.patch from
|
||||||
|
http://rt.cpan.org/Public/Bug/Display.html?id=50060
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Nov 12 23:18:07 UTC 2010 - jw@novell.com
|
||||||
|
|
||||||
|
- needed by publican
|
||||||
|
- initial package 3.09
|
||||||
|
* created by cpanspec 1.78.02
|
||||||
|
|
79
perl-XML-TreeBuilder.spec
Normal file
79
perl-XML-TreeBuilder.spec
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
#
|
||||||
|
# spec file for package perl-XML-TreeBuilder (Version 3.09)
|
||||||
|
#
|
||||||
|
# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||||
|
#
|
||||||
|
# All modifications and additions to the file contributed by third parties
|
||||||
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
|
# upon. The license for this file, and modifications and additions to the
|
||||||
|
# file, is the same license as for the pristine package itself (unless the
|
||||||
|
# license for the pristine package is not an Open Source License, in which
|
||||||
|
# case the license is the MIT License). An "Open Source License" is a
|
||||||
|
# license that conforms to the Open Source Definition (Version 1.9)
|
||||||
|
# published by the Open Source Initiative.
|
||||||
|
|
||||||
|
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
||||||
|
#
|
||||||
|
|
||||||
|
# norootforbuild
|
||||||
|
|
||||||
|
Name: perl-XML-TreeBuilder
|
||||||
|
%define cpan_name XML-TreeBuilder
|
||||||
|
Summary: Parser that builds a tree of XML::Element objects
|
||||||
|
Version: 3.09
|
||||||
|
Release: 1
|
||||||
|
License: CHECK(GPL+ or Artistic)
|
||||||
|
Group: Development/Libraries/Perl
|
||||||
|
Url: http://search.cpan.org/dist/XML-TreeBuilder/
|
||||||
|
Source: http://www.cpan.org/authors/id/S/SB/SBURKE/XML-TreeBuilder-%{version}.tar.bz2
|
||||||
|
Patch1: XML-TreeBuilder-NoExpand.patch
|
||||||
|
BuildArch: noarch
|
||||||
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
|
BuildRequires: perl
|
||||||
|
%if 0%{?suse_version} < 1120
|
||||||
|
BuildRequires: perl-macros
|
||||||
|
%endif
|
||||||
|
BuildRequires: perl(HTML::Element) >= 3.08
|
||||||
|
BuildRequires: perl(HTML::Tagset) >= 3.02
|
||||||
|
BuildRequires: perl(XML::Parser)
|
||||||
|
Requires: perl = %{perl_version}
|
||||||
|
Requires: perl(HTML::Element) >= 3.08
|
||||||
|
Requires: perl(HTML::Tagset) >= 3.02
|
||||||
|
Requires: perl(XML::Parser)
|
||||||
|
|
||||||
|
%description
|
||||||
|
This module uses XML::Parser to make XML document trees constructed of
|
||||||
|
XML::Element objects (and XML::Element is a subclass of HTML::Element
|
||||||
|
adapted for XML). XML::TreeBuilder is meant particularly for people who
|
||||||
|
are used to the HTML::TreeBuilder / HTML::Element interface to document
|
||||||
|
trees, and who don't want to learn some other document interface like
|
||||||
|
XML::Twig or XML::DOM.
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%setup -q -n %{cpan_name}-%{version}
|
||||||
|
%patch1 -p1
|
||||||
|
|
||||||
|
%build
|
||||||
|
%{__perl} Makefile.PL INSTALLDIRS=vendor
|
||||||
|
%{__make} %{?_smp_mflags}
|
||||||
|
|
||||||
|
%check
|
||||||
|
%{__make} test
|
||||||
|
|
||||||
|
%install
|
||||||
|
%perl_make_install
|
||||||
|
# do not perl_process_packlist (noarch)
|
||||||
|
# remove .packlist file
|
||||||
|
%{__rm} -rf $RPM_BUILD_ROOT%perl_vendorarch
|
||||||
|
# remove perllocal.pod file
|
||||||
|
%{__rm} -rf $RPM_BUILD_ROOT%perl_archlib
|
||||||
|
%perl_gen_filelist
|
||||||
|
|
||||||
|
%clean
|
||||||
|
%{__rm} -rf $RPM_BUILD_ROOT
|
||||||
|
|
||||||
|
%files -f %{name}.files
|
||||||
|
%defattr(-,root,root,-)
|
||||||
|
%doc Changes README
|
||||||
|
|
||||||
|
%changelog
|
Reference in New Issue
Block a user