[libxml-compile-perl] 01/04: Imported Upstream version 1.50
Lucas Kanashiro
kanashiro-guest at moszumanska.debian.org
Fri Jul 24 03:34:43 UTC 2015
This is an automated email from the git hooks/post-receive script.
kanashiro-guest pushed a commit to branch master
in repository libxml-compile-perl.
commit 48f433520cae1ff455f56a7c0a62085e1d292f53
Author: Lucas Kanashiro <kanashiro.duarte at gmail.com>
Date: Fri Jul 24 00:25:03 2015 -0300
Imported Upstream version 1.50
---
ChangeLog | 15 +++++-
META.json | 2 +-
META.yml | 2 +-
Makefile.PL | 2 +-
README | 12 ++---
lib/XML/Compile.pm | 2 +-
lib/XML/Compile.pod | 4 +-
lib/XML/Compile/FAQ.pod | 4 +-
lib/XML/Compile/Iterator.pm | 2 +-
lib/XML/Compile/Iterator.pod | 4 +-
lib/XML/Compile/Schema.pm | 2 +-
lib/XML/Compile/Schema.pod | 4 +-
lib/XML/Compile/Schema/BuiltInFacets.pm | 2 +-
lib/XML/Compile/Schema/BuiltInFacets.pod | 4 +-
lib/XML/Compile/Schema/BuiltInTypes.pm | 2 +-
lib/XML/Compile/Schema/BuiltInTypes.pod | 4 +-
lib/XML/Compile/Schema/Instance.pm | 2 +-
lib/XML/Compile/Schema/Instance.pod | 4 +-
lib/XML/Compile/Schema/NameSpaces.pm | 2 +-
lib/XML/Compile/Schema/NameSpaces.pod | 4 +-
lib/XML/Compile/Schema/Specs.pm | 2 +-
lib/XML/Compile/Schema/Specs.pod | 4 +-
lib/XML/Compile/Translate.pm | 83 ++++++++++++++++++++------------
lib/XML/Compile/Translate.pod | 4 +-
lib/XML/Compile/Translate/Reader.pm | 16 +++---
lib/XML/Compile/Translate/Reader.pod | 4 +-
lib/XML/Compile/Translate/Template.pm | 2 +-
lib/XML/Compile/Translate/Template.pod | 4 +-
lib/XML/Compile/Translate/Writer.pm | 29 ++++++-----
lib/XML/Compile/Translate/Writer.pod | 4 +-
lib/XML/Compile/Util.pm | 2 +-
lib/XML/Compile/Util.pod | 4 +-
t/TestTools.pm | 2 +-
33 files changed, 141 insertions(+), 98 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index d81d4bc..aba8c5f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,19 @@ Mark Overmeer.
Plans and unwanted limitations? see README.todo
+version 1.50: di jul 21 17:35:33 CEST 2015
+
+ Changes:
+ - input of simpletype hooks is now a simpletype
+
+ Fixes:
+ - root elements cannot be substituted
+ - nested substitutionGroup's (broken since 1.44)
+ - multi-level fallback type inheritance for substGroups
+
+ Improvements:
+ - writer: minor improvements in hooks
+
version 1.49: Thu Jun 11 09:40:55 CEST 2015
Fixes:
@@ -68,7 +81,7 @@ version 1.44: Wed May 28 09:23:24 CEST 2014
- template XML: show attributes not as elements
- template XML: XML compatible example for list elements
- memory-leak keeping ::Reader and ::Writer objects [Michiel Ootjers]
- - no not accept to read NIL when not nillable
+ - do not accept to read NIL when not nillable
Improvements:
- ::Util new functions add_duration() and duration2secs() tests
diff --git a/META.json b/META.json
index 5398af1..9640306 100644
--- a/META.json
+++ b/META.json
@@ -48,5 +48,5 @@
}
},
"release_status" : "stable",
- "version" : "1.49"
+ "version" : "1.50"
}
diff --git a/META.yml b/META.yml
index aa15485..10554dc 100644
--- a/META.yml
+++ b/META.yml
@@ -30,4 +30,4 @@ requires:
XML::Compile::Tester: 0.9
XML::LibXML: 2.01
bignum: 0.1
-version: 1.49
+version: 1.50
diff --git a/Makefile.PL b/Makefile.PL
index e007f6d..8f24cc4 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -4,7 +4,7 @@ use 5.008;
WriteMakefile
( NAME => 'XML::Compile'
- , VERSION => '1.49'
+ , VERSION => '1.50'
, PREREQ_PM =>
{ XML::LibXML => 2.0100
diff --git a/README b/README
index bf2a96a..5e426a4 100644
--- a/README
+++ b/README
@@ -1,5 +1,5 @@
-=== README for XML-Compile version 1.49
-= Generated on Thu Jun 11 09:42:18 2015 by OODoc 2.01
+=== README for XML-Compile version 1.50
+= Generated on Tue Jul 21 17:35:41 2015 by OODoc 2.01
There are various ways to install this module:
@@ -9,16 +9,16 @@ There are various ways to install this module:
(2) if you use Windows, have a look at http://ppm.activestate.com/
(3) if you have downloaded this module manually (as root/administrator)
- gzip -d XML-Compile-1.49.tar.gz
- tar -xf XML-Compile-1.49.tar
- cd XML-Compile-1.49
+ gzip -d XML-Compile-1.50.tar.gz
+ tar -xf XML-Compile-1.50.tar
+ cd XML-Compile-1.50
perl Makefile.PL
make # optional
make test # optional
make install
For usage, see the included manual-pages or
- http://search.cpan.org/dist/XML-Compile-1.49/
+ http://search.cpan.org/dist/XML-Compile-1.50/
Please report problems to
http://rt.cpan.org/Dist/Display.html?Queue=XML-Compile
diff --git a/lib/XML/Compile.pm b/lib/XML/Compile.pm
index c07221d..e6eff5a 100644
--- a/lib/XML/Compile.pm
+++ b/lib/XML/Compile.pm
@@ -8,7 +8,7 @@ use strict;
package XML::Compile;
use vars '$VERSION';
-$VERSION = '1.49';
+$VERSION = '1.50';
use Log::Report 'xml-compile';
diff --git a/lib/XML/Compile.pod b/lib/XML/Compile.pod
index 8998da4..9bbf1a8 100644
--- a/lib/XML/Compile.pod
+++ b/lib/XML/Compile.pod
@@ -295,8 +295,8 @@ other modules.
=head1 SEE ALSO
-This module is part of XML-Compile distribution version 1.49,
-built on June 11, 2015. Website: F<http://perl.overmeer.net/xml-compile/>
+This module is part of XML-Compile distribution version 1.50,
+built on juli 21, 2015. Website: F<http://perl.overmeer.net/xml-compile/>
Other distributions in this suite:
L<XML::Compile>,
diff --git a/lib/XML/Compile/FAQ.pod b/lib/XML/Compile/FAQ.pod
index 68bd589..5fbdd3e 100644
--- a/lib/XML/Compile/FAQ.pod
+++ b/lib/XML/Compile/FAQ.pod
@@ -214,8 +214,8 @@ Try turning on debugging with:
=head1 SEE ALSO
-This module is part of XML-Compile distribution version 1.49,
-built on June 11, 2015. Website: F<http://perl.overmeer.net/xml-compile/>
+This module is part of XML-Compile distribution version 1.50,
+built on juli 21, 2015. Website: F<http://perl.overmeer.net/xml-compile/>
Other distributions in this suite:
L<XML::Compile>,
diff --git a/lib/XML/Compile/Iterator.pm b/lib/XML/Compile/Iterator.pm
index b3ff6f3..1f11276 100644
--- a/lib/XML/Compile/Iterator.pm
+++ b/lib/XML/Compile/Iterator.pm
@@ -7,7 +7,7 @@ use strict;
package XML::Compile::Iterator;
use vars '$VERSION';
-$VERSION = '1.49';
+$VERSION = '1.50';
use XML::Compile::Util qw/pack_type type_of_node SCHEMA2001i/;
diff --git a/lib/XML/Compile/Iterator.pod b/lib/XML/Compile/Iterator.pod
index 5bf2a8f..4d3617d 100644
--- a/lib/XML/Compile/Iterator.pod
+++ b/lib/XML/Compile/Iterator.pod
@@ -132,8 +132,8 @@ Returns the textContent of the L<node()|XML::Compile::Iterator/"Attributes">, or
=head1 SEE ALSO
-This module is part of XML-Compile distribution version 1.49,
-built on June 11, 2015. Website: F<http://perl.overmeer.net/xml-compile/>
+This module is part of XML-Compile distribution version 1.50,
+built on juli 21, 2015. Website: F<http://perl.overmeer.net/xml-compile/>
Other distributions in this suite:
L<XML::Compile>,
diff --git a/lib/XML/Compile/Schema.pm b/lib/XML/Compile/Schema.pm
index 29d7f08..b386130 100644
--- a/lib/XML/Compile/Schema.pm
+++ b/lib/XML/Compile/Schema.pm
@@ -5,7 +5,7 @@
package XML::Compile::Schema;
use vars '$VERSION';
-$VERSION = '1.49';
+$VERSION = '1.50';
use base 'XML::Compile';
diff --git a/lib/XML/Compile/Schema.pod b/lib/XML/Compile/Schema.pod
index d96ce03..e66ad87 100644
--- a/lib/XML/Compile/Schema.pod
+++ b/lib/XML/Compile/Schema.pod
@@ -1714,8 +1714,8 @@ then still only one prefix is added.
=head1 SEE ALSO
-This module is part of XML-Compile distribution version 1.49,
-built on June 11, 2015. Website: F<http://perl.overmeer.net/xml-compile/>
+This module is part of XML-Compile distribution version 1.50,
+built on juli 21, 2015. Website: F<http://perl.overmeer.net/xml-compile/>
Other distributions in this suite:
L<XML::Compile>,
diff --git a/lib/XML/Compile/Schema/BuiltInFacets.pm b/lib/XML/Compile/Schema/BuiltInFacets.pm
index 27d1f2a..88f40f4 100644
--- a/lib/XML/Compile/Schema/BuiltInFacets.pm
+++ b/lib/XML/Compile/Schema/BuiltInFacets.pm
@@ -8,7 +8,7 @@ no warnings 'recursion';
package XML::Compile::Schema::BuiltInFacets;
use vars '$VERSION';
-$VERSION = '1.49';
+$VERSION = '1.50';
use base 'Exporter';
diff --git a/lib/XML/Compile/Schema/BuiltInFacets.pod b/lib/XML/Compile/Schema/BuiltInFacets.pod
index 018785d..2658770 100644
--- a/lib/XML/Compile/Schema/BuiltInFacets.pod
+++ b/lib/XML/Compile/Schema/BuiltInFacets.pod
@@ -32,8 +32,8 @@ The content is not for end-users, but called by the schema translator.
=head1 SEE ALSO
-This module is part of XML-Compile distribution version 1.49,
-built on June 11, 2015. Website: F<http://perl.overmeer.net/xml-compile/>
+This module is part of XML-Compile distribution version 1.50,
+built on juli 21, 2015. Website: F<http://perl.overmeer.net/xml-compile/>
Other distributions in this suite:
L<XML::Compile>,
diff --git a/lib/XML/Compile/Schema/BuiltInTypes.pm b/lib/XML/Compile/Schema/BuiltInTypes.pm
index af08144..3a7bb96 100644
--- a/lib/XML/Compile/Schema/BuiltInTypes.pm
+++ b/lib/XML/Compile/Schema/BuiltInTypes.pm
@@ -8,7 +8,7 @@ no warnings 'recursion';
package XML::Compile::Schema::BuiltInTypes;
use vars '$VERSION';
-$VERSION = '1.49';
+$VERSION = '1.50';
use base 'Exporter';
diff --git a/lib/XML/Compile/Schema/BuiltInTypes.pod b/lib/XML/Compile/Schema/BuiltInTypes.pod
index d17dcdb..7ff2def 100644
--- a/lib/XML/Compile/Schema/BuiltInTypes.pod
+++ b/lib/XML/Compile/Schema/BuiltInTypes.pod
@@ -365,8 +365,8 @@ Probably the same rules as L<anyURI()|XML::Compile::Schema::BuiltInTypes/"URI">.
=head1 SEE ALSO
-This module is part of XML-Compile distribution version 1.49,
-built on June 11, 2015. Website: F<http://perl.overmeer.net/xml-compile/>
+This module is part of XML-Compile distribution version 1.50,
+built on juli 21, 2015. Website: F<http://perl.overmeer.net/xml-compile/>
Other distributions in this suite:
L<XML::Compile>,
diff --git a/lib/XML/Compile/Schema/Instance.pm b/lib/XML/Compile/Schema/Instance.pm
index 85f36ec..837b366 100644
--- a/lib/XML/Compile/Schema/Instance.pm
+++ b/lib/XML/Compile/Schema/Instance.pm
@@ -8,7 +8,7 @@ use strict;
package XML::Compile::Schema::Instance;
use vars '$VERSION';
-$VERSION = '1.49';
+$VERSION = '1.50';
use Log::Report 'xml-compile', syntax => 'SHORT';
diff --git a/lib/XML/Compile/Schema/Instance.pod b/lib/XML/Compile/Schema/Instance.pod
index d005050..7628c88 100644
--- a/lib/XML/Compile/Schema/Instance.pod
+++ b/lib/XML/Compile/Schema/Instance.pod
@@ -176,8 +176,8 @@ anyway).
=head1 SEE ALSO
-This module is part of XML-Compile distribution version 1.49,
-built on June 11, 2015. Website: F<http://perl.overmeer.net/xml-compile/>
+This module is part of XML-Compile distribution version 1.50,
+built on juli 21, 2015. Website: F<http://perl.overmeer.net/xml-compile/>
Other distributions in this suite:
L<XML::Compile>,
diff --git a/lib/XML/Compile/Schema/NameSpaces.pm b/lib/XML/Compile/Schema/NameSpaces.pm
index 8da937f..c104445 100644
--- a/lib/XML/Compile/Schema/NameSpaces.pm
+++ b/lib/XML/Compile/Schema/NameSpaces.pm
@@ -8,7 +8,7 @@ use strict;
package XML::Compile::Schema::NameSpaces;
use vars '$VERSION';
-$VERSION = '1.49';
+$VERSION = '1.50';
use Log::Report 'xml-compile', syntax => 'SHORT';
diff --git a/lib/XML/Compile/Schema/NameSpaces.pod b/lib/XML/Compile/Schema/NameSpaces.pod
index f818a99..27537e7 100644
--- a/lib/XML/Compile/Schema/NameSpaces.pod
+++ b/lib/XML/Compile/Schema/NameSpaces.pod
@@ -148,8 +148,8 @@ This method implements L<XML::Compile::Schema::useSchema()|XML::Compile::Schema/
=head1 SEE ALSO
-This module is part of XML-Compile distribution version 1.49,
-built on June 11, 2015. Website: F<http://perl.overmeer.net/xml-compile/>
+This module is part of XML-Compile distribution version 1.50,
+built on juli 21, 2015. Website: F<http://perl.overmeer.net/xml-compile/>
Other distributions in this suite:
L<XML::Compile>,
diff --git a/lib/XML/Compile/Schema/Specs.pm b/lib/XML/Compile/Schema/Specs.pm
index 1d44e29..44d2211 100644
--- a/lib/XML/Compile/Schema/Specs.pm
+++ b/lib/XML/Compile/Schema/Specs.pm
@@ -8,7 +8,7 @@ use strict;
package XML::Compile::Schema::Specs;
use vars '$VERSION';
-$VERSION = '1.49';
+$VERSION = '1.50';
use Log::Report 'xml-compile', syntax => 'SHORT';
diff --git a/lib/XML/Compile/Schema/Specs.pod b/lib/XML/Compile/Schema/Specs.pod
index 4dff0e0..7a2d306 100644
--- a/lib/XML/Compile/Schema/Specs.pod
+++ b/lib/XML/Compile/Schema/Specs.pod
@@ -58,8 +58,8 @@ Returns the uri of all predefined schemas.
=head1 SEE ALSO
-This module is part of XML-Compile distribution version 1.49,
-built on June 11, 2015. Website: F<http://perl.overmeer.net/xml-compile/>
+This module is part of XML-Compile distribution version 1.50,
+built on juli 21, 2015. Website: F<http://perl.overmeer.net/xml-compile/>
Other distributions in this suite:
L<XML::Compile>,
diff --git a/lib/XML/Compile/Translate.pm b/lib/XML/Compile/Translate.pm
index 29d7209..6063e22 100644
--- a/lib/XML/Compile/Translate.pm
+++ b/lib/XML/Compile/Translate.pm
@@ -8,7 +8,7 @@ no warnings 'recursion'; # trees can be quite deep
package XML::Compile::Translate;
use vars '$VERSION';
-$VERSION = '1.49';
+$VERSION = '1.50';
# Errors are either in _class 'usage': called with request
@@ -103,7 +103,7 @@ sub compile($@)
}
delete $self->{_created};
- my $produce = $self->topLevel($path, $item);
+ my $produce = $self->topLevel($path, $item, 1);
delete $self->{_created};
my $in = $self->{include_namespaces}
@@ -197,8 +197,8 @@ sub nsContext($)
sub namespaces() { $_[0]->{nss} }
-sub topLevel($$)
-{ my ($self, $path, $fullname) = @_;
+sub topLevel($$;$)
+{ my ($self, $path, $fullname, $is_root) = @_;
# built-in types have to be handled differently.
my $internal = XML::Compile::Schema::Specs->builtInType(undef, $fullname
@@ -238,7 +238,7 @@ sub topLevel($$)
my $name = $node->localName;
my $data;
if($name eq 'element')
- { my ($label, $make) = $self->element($tree);
+ { my ($label, $make) = $self->element($tree, $is_root);
$data = $self->makeElementWrapper($path, $make) if $make;
}
elsif($name eq 'attribute')
@@ -525,8 +525,8 @@ sub applySimpleFacets($$$$)
: $self->makeFacets($where, $st, \%facets_info, @early, @late);
}
-sub element($)
-{ my ($self, $tree) = @_;
+sub element($;$)
+{ my ($self, $tree, $is_root) = @_;
# attributes: abstract, default, fixed, form, id, maxOccurs, minOccurs
# , name, nillable, ref, substitutionGroup, targetNamespace, type
@@ -587,19 +587,39 @@ sub element($)
local $self->{_context} = $context if $is_global;
my $nodetype = $qual ? $fullname : $name;
+ # SubstitionGroups
+ # We know the type of the message root, so do not need to look for
+ # alternative sgs (and it wouldn't work anyway)
+
+ my @sgs;
+ @sgs = $self->namespaces->findSgMembers($node->localName, $fullname)
+ unless $is_root;
+
# Handle re-usable fragments, fight against combinatorial explosions
my $nodeid = $node->unique_key; #$node->nodePath.'#'.$fullname;
- my $already = $self->{_created}{$nodeid};
-#warn "$nodeid; ", $node+0,"\n" if $already;
-#undef $already;
- return ($nodetype, $already) if $already;
+ if(my $already = $self->{_created}{$nodeid})
+ { # We cannot cache compile subst-group handlers, because sgs using
+ # elements which were already compiled into sgs does not work.
+ $already = $self->substitutionGroup($tree, $fullname, $nodetype
+ , $already, \@sgs) if @sgs;
+ return ($nodetype, $already);
+ }
# Detect recursion
+ # Very complicated: recursively nested structures. It is less of a
+ # problem when you handle in run-time what you see... but we here
+ # have to be prepared for everything.
if(exists $self->{_nest}{$nodeid})
- { my $outer = \$self->{_nest}{$nodeid};
- return ($nodetype, sub { $$outer->(@_) });
+ { my $outer = \$self->{_nest}{$nodeid};
+ my $nested = sub { $$outer->(@_) };
+
+ # The code must be blessed in the right class, to be compiled
+ # correctly inside its parent.
+ bless $nested, 'BLOCK' if @sgs;
+
+ return ($nodetype, $nested);
}
$self->{_nest}{$nodeid} = undef;
@@ -623,16 +643,21 @@ sub element($)
|| $self->typeByName($where, $tree, $comptype);
}
elsif($nr_childs==0)
- { if(my $subst = $node->getAttribute('substitutionGroup'))
- { # default type for substGroups is type of base-class
- my $subst_elem = $self->rel2abs($where, $node, $subst);
+ { # default type for substGroups is type of base-class
+ my $base_node = $node;
+ local $self->{_context};
+ while(my $subst = $base_node->getAttribute('substitutionGroup'))
+ { my $subst_elem = $self->rel2abs($where, $base_node, $subst);
my $base_elem = $self->namespaces->find(element => $subst_elem);
- my $node = $base_elem->{node};
- if(my $isa = $node->getAttribute('type'))
- { $comptype = $self->rel2abs($where, $node, $isa);
- $comps = $self->blocked($where, complexType => $comptype)
- || $self->typeByName($where, $tree, $comptype);
- }
+ $self->{_context} = $self->nsContext($base_elem);
+ $base_node = $base_elem->{node};
+ my $isa = $base_node->getAttribute('type')
+ or next;
+
+ $comptype = $self->rel2abs($where, $base_node, $isa);
+ $comps = $self->blocked($where, complexType => $comptype)
+ || $self->typeByName($where, $tree, $comptype);
+ last;
}
unless($comptype)
{ # no type found, so anyType
@@ -711,15 +736,14 @@ sub element($)
$do = $self->xsiType($tree, $node, $name, $comptype, $do)
if $comptype && $self->{xsi_type}{$comptype};
- if($is_global)
- { my @sgs = $self->namespaces->findSgMembers($node->localName, $fullname);
- $do = $self->substitutionGroup($tree, $fullname, $nodetype, $do, \@sgs)
- if @sgs;
- }
-
$do = $self->addTypeAttribute($comptype, $do)
if $self->{xsi_type_everywhere} && $comptype !~ /^unnamed /;
+ $self->{_created}{$nodeid} = $do;
+
+ $do = $self->substitutionGroup($tree, $fullname, $nodetype, $do, \@sgs)
+ if @sgs;
+
# handle recursion
# this must look very silly to you... however, this is resolving
# recursive schemas: this way nested use of the same element
@@ -727,7 +751,6 @@ sub element($)
$self->{_nest}{$nodeid} = $do;
delete $self->{_nest}{$nodeid}; # clean the outer definition
- $self->{_created}{$nodeid} = $do;
($nodetype, $do);
}
@@ -929,7 +952,7 @@ sub substitutionGroup($$$$$)
push @elems, $label => [$self->keyRewrite($label), $base] if $base;
foreach my $subst (@$sgs)
- { my ($l, $d) = $self->element($tree->descend($subst->{node}));
+ { my ($l, $d) = $self->element($tree->descend($subst->{node}), 1);
push @elems, $l => [$self->keyRewrite($l), $d] if defined $d;
}
diff --git a/lib/XML/Compile/Translate.pod b/lib/XML/Compile/Translate.pod
index 88c6cad..c54d7d9 100644
--- a/lib/XML/Compile/Translate.pod
+++ b/lib/XML/Compile/Translate.pod
@@ -396,8 +396,8 @@ element does not contains sub-elements, otherwise the XML node.
=head1 SEE ALSO
-This module is part of XML-Compile distribution version 1.49,
-built on June 11, 2015. Website: F<http://perl.overmeer.net/xml-compile/>
+This module is part of XML-Compile distribution version 1.50,
+built on juli 21, 2015. Website: F<http://perl.overmeer.net/xml-compile/>
Other distributions in this suite:
L<XML::Compile>,
diff --git a/lib/XML/Compile/Translate/Reader.pm b/lib/XML/Compile/Translate/Reader.pm
index e59056b..e3cd4ff 100644
--- a/lib/XML/Compile/Translate/Reader.pm
+++ b/lib/XML/Compile/Translate/Reader.pm
@@ -4,7 +4,7 @@
# Pod stripped from pm file by OODoc 2.01.
package XML::Compile::Translate::Reader;
use vars '$VERSION';
-$VERSION = '1.49';
+$VERSION = '1.50';
use base 'XML::Compile::Translate';
@@ -14,7 +14,7 @@ no warnings 'once', 'recursion';
use Log::Report 'xml-compile', syntax => 'SHORT';
use List::Util qw/first/;
-use Scalar::Util qw/weaken/;
+use Scalar::Util qw/weaken blessed/;
use XML::Compile::Util qw/pack_type odd_elements type_of_node SCHEMA2001i/;
use XML::Compile::Iterator ();
@@ -78,7 +78,7 @@ sub makeElementWrapper
{ my ($self, $path, $processor) = @_;
# no copy of $_[0], because it may be a large string
sub { my $tree;
- if(ref $_[0] && UNIVERSAL::isa($_[0], 'XML::LibXML::Iterator'))
+ if(blessed $_[0] && $_[0]->isa('XML::LibXML::Iterator'))
{ $tree = $_[0];
}
else
@@ -139,6 +139,7 @@ sub makeSequence($@)
sub { my $tree = shift;
my @res;
my @do = @pairs;
+
while(@do)
{ my ($take, $do) = (shift @do, shift @do);
push @res, ref $do eq 'BLOCK'
@@ -224,8 +225,9 @@ sub makeChoice($@)
or error __x"choice needs more elements at {path}"
, path => $path, _class => 'misfit';
+
my @elems = sort keys %do;
- trace "choose element from @elems or fix special" if @elems;
+ trace "choose element from @elems or fix special at $path" if @elems;
trace "failed specials in choice: $_" for @special_errors;
error __x"no applicable choice for `{tag}' at {path}"
@@ -588,7 +590,7 @@ sub _not_processed($$)
sub makeComplexElement
{ my ($self, $path, $tag, $elems, $attrs, $attrs_any,undef,$is_nillable) = @_;
-my @e = @$elems; my @a = @$attrs;
+#my @e = @$elems; my @a = @$attrs;
my @elems = odd_elements @$elems;
my @attrs = (odd_elements(@$attrs), @$attrs_any);
@@ -931,7 +933,7 @@ sub makeSubstgroup
sub { my $tree = shift;
my $type = ($tree ? $tree->currentType : undef)
or error __x"no data for substitution group {type} at {path}"
- , type => $base, path => $path;
+ , type => $base, path => $path, class => 'misfit';
my $do = $do{$type} or return ();
my @subst = $do->[1]($tree->descend);
@@ -1113,7 +1115,7 @@ sub makeHook($$$$$$$)
: $process->();
@h or return ();
- my $h = @h==1 && !ref $h[0] ? {_ => $h[0]} : $h[1]; # detect simpleType
+ my $h = @h==1 ? $h[0] : $h[1]; # detect simpleType
foreach my $after (@after)
{ $h = $after->($xml, $h, $path, $fulltype);
defined $h or return ();
diff --git a/lib/XML/Compile/Translate/Reader.pod b/lib/XML/Compile/Translate/Reader.pod
index 3a20455..767587b 100644
--- a/lib/XML/Compile/Translate/Reader.pod
+++ b/lib/XML/Compile/Translate/Reader.pod
@@ -301,8 +301,8 @@ with some extra checks.
=head1 SEE ALSO
-This module is part of XML-Compile distribution version 1.49,
-built on June 11, 2015. Website: F<http://perl.overmeer.net/xml-compile/>
+This module is part of XML-Compile distribution version 1.50,
+built on juli 21, 2015. Website: F<http://perl.overmeer.net/xml-compile/>
Other distributions in this suite:
L<XML::Compile>,
diff --git a/lib/XML/Compile/Translate/Template.pm b/lib/XML/Compile/Translate/Template.pm
index 68389b6..4cc3dbc 100644
--- a/lib/XML/Compile/Translate/Template.pm
+++ b/lib/XML/Compile/Translate/Template.pm
@@ -5,7 +5,7 @@
package XML::Compile::Translate::Template;
use vars '$VERSION';
-$VERSION = '1.49';
+$VERSION = '1.50';
use base 'XML::Compile::Translate';
diff --git a/lib/XML/Compile/Translate/Template.pod b/lib/XML/Compile/Translate/Template.pod
index 6240174..5fb62b1 100644
--- a/lib/XML/Compile/Translate/Template.pod
+++ b/lib/XML/Compile/Translate/Template.pod
@@ -83,8 +83,8 @@ of the specified class.
=head1 SEE ALSO
-This module is part of XML-Compile distribution version 1.49,
-built on June 11, 2015. Website: F<http://perl.overmeer.net/xml-compile/>
+This module is part of XML-Compile distribution version 1.50,
+built on juli 21, 2015. Website: F<http://perl.overmeer.net/xml-compile/>
Other distributions in this suite:
L<XML::Compile>,
diff --git a/lib/XML/Compile/Translate/Writer.pm b/lib/XML/Compile/Translate/Writer.pm
index b1ec90b..03d33ab 100644
--- a/lib/XML/Compile/Translate/Writer.pm
+++ b/lib/XML/Compile/Translate/Writer.pm
@@ -5,7 +5,7 @@
package XML::Compile::Translate::Writer;
use vars '$VERSION';
-$VERSION = '1.49';
+$VERSION = '1.50';
use base 'XML::Compile::Translate';
@@ -482,7 +482,6 @@ sub nil($)
sub makeComplexElement
{ my ($self, $path, $tag, $elems, $attrs, $any_attr,undef, $is_nillable) = @_;
-my @e = @$elems;
my @elems = odd_elements @$elems;
my @attrs = @$attrs;
my $tags = join ', ', grep defined
@@ -1061,29 +1060,35 @@ sub makeHook($$$$$$$)
{ my ($self, $path, $r, $tag, $before, $replace, $after, $fulltype) = @_;
return $r unless $before || $replace || $after;
- error __x"writer only supports one production (replace) hook"
- if $replace && @$replace > 1;
+ my $do_replace;
+ if($replace)
+ { return sub {()} if grep $_ eq 'SKIP', @$replace;
- return sub {()} if $replace && grep $_ eq 'SKIP', @$replace;
+ # Input for replace is Perl, output is XML... so we cannot stack them
+ error __x"writer only supports one replace hook (for {type})"
+ , type => $fulltype
+ if @$replace > 1;
- my @replace = $replace ? map $self->_decodeReplace($path,$_), @$replace :();
- my @before = $before ? map $self->_decodeBefore($path,$_), @$before :();
- my @after = $after ? map $self->_decodeAfter($path,$_), @$after :();
+ $do_replace = $self->_decodeReplace($path, $replace->[0]);
+ }
+
+ my @do_before = $before ? map $self->_decodeBefore($path,$_), @$before :();
+ my @do_after = $after ? map $self->_decodeAfter($path,$_), @$after :();
sub
{ my ($doc, $val) = @_;
defined $val or return;
- foreach (@before)
+ foreach (@do_before)
{ $val = $_->($doc, $val, $path, $fulltype);
defined $val or return ();
}
- my $xml = @replace
- ? $replace[0]->($doc, $val, $path, $tag, $r, $fulltype)
+ my $xml = $do_replace
+ ? $do_replace->($doc, $val, $path, $tag, $r, $fulltype)
: $r->($doc, $val);
defined $xml or return ();
- foreach (@after)
+ foreach (@do_after)
{ $xml = $_->($doc, $xml, $path, $val, $fulltype);
defined $xml or return ();
}
diff --git a/lib/XML/Compile/Translate/Writer.pod b/lib/XML/Compile/Translate/Writer.pod
index 07b8520..ecf5a08 100644
--- a/lib/XML/Compile/Translate/Writer.pod
+++ b/lib/XML/Compile/Translate/Writer.pod
@@ -216,8 +216,8 @@ writer considerably.
=head1 SEE ALSO
-This module is part of XML-Compile distribution version 1.49,
-built on June 11, 2015. Website: F<http://perl.overmeer.net/xml-compile/>
+This module is part of XML-Compile distribution version 1.50,
+built on juli 21, 2015. Website: F<http://perl.overmeer.net/xml-compile/>
Other distributions in this suite:
L<XML::Compile>,
diff --git a/lib/XML/Compile/Util.pm b/lib/XML/Compile/Util.pm
index bb5241c..6402edd 100644
--- a/lib/XML/Compile/Util.pm
+++ b/lib/XML/Compile/Util.pm
@@ -7,7 +7,7 @@ use strict;
package XML::Compile::Util;
use vars '$VERSION';
-$VERSION = '1.49';
+$VERSION = '1.50';
use base 'Exporter';
diff --git a/lib/XML/Compile/Util.pod b/lib/XML/Compile/Util.pod
index fd4ad2b..deb57d3 100644
--- a/lib/XML/Compile/Util.pod
+++ b/lib/XML/Compile/Util.pod
@@ -111,8 +111,8 @@ Translate an XML::LibXML::Node into a packed type.
=head1 SEE ALSO
-This module is part of XML-Compile distribution version 1.49,
-built on June 11, 2015. Website: F<http://perl.overmeer.net/xml-compile/>
+This module is part of XML-Compile distribution version 1.50,
+built on juli 21, 2015. Website: F<http://perl.overmeer.net/xml-compile/>
Other distributions in this suite:
L<XML::Compile>,
diff --git a/t/TestTools.pm b/t/TestTools.pm
index 5cd2a11..4a46c17 100644
--- a/t/TestTools.pm
+++ b/t/TestTools.pm
@@ -7,7 +7,7 @@ use strict;
package TestTools;
use vars '$VERSION';
-$VERSION = '1.49';
+$VERSION = '1.50';
use base 'Exporter';
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libxml-compile-perl.git
More information about the Pkg-perl-cvs-commits
mailing list