From 2d2aedefaf141939d3860edbc9d32c1dae9fa14f Mon Sep 17 00:00:00 2001 From: Timothy Totten <2010@huri.net> Date: Fri, 9 Nov 2012 17:01:51 -0800 Subject: [PATCH] Fixed cloning, and readded feature for text node display. --- lib/XML.pm6 | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/lib/XML.pm6 b/lib/XML.pm6 index 5c28902..3551a91 100644 --- a/lib/XML.pm6 +++ b/lib/XML.pm6 @@ -147,19 +147,21 @@ class XML::Element does XML::Node method cloneNode () { - my $clone = self.clone; - $clone.attribs = $clone.attribs.clone; + my $clone = self.new; + $clone.name = $.name; + $clone.idattr = $.idattr; + $clone.attribs = %.attribs.clone; $clone.nodes = []; - loop (my $i=0; $i < $clone.nodes.elems; $i++) + loop (my $i=0; $i < @.nodes.elems; $i++) { - if ($clone.nodes[$i] ~~ XML::Node) + if (@.nodes[$i] ~~ XML::Node) { - $clone.nodes[$i] = $clone.nodes[$i].cloneNode; + $clone.nodes[$i] = @.nodes[$i].cloneNode; $clone.nodes[$i].parent = $clone; } else { - $clone.nodes[$i] = $clone.nodes[$i].clone; + $clone.nodes[$i] = @.nodes[$i].clone; } } return $clone; @@ -855,13 +857,16 @@ class XML::Element does XML::Node { $element ~= '>'; my $lastnode; - for @.nodes -> $node { -# if ( ## Use this on anything now. -# defined $lastnode #&& $lastnode ~~ XML::Text -# && ~$lastnode !~~ /\s+$/ && $node ~~ XML::Text -# ) { -# $element ~= ' '; ## Add a space. -# } + for @.nodes -> $node + { + if + ( + $lastnode.defined + && ~$lastnode !~~ /\s+$/ && $node ~~ XML::Text + ) + { + $element ~= ' '; ## Add a space. + } $element ~= $node; $lastnode = $node; }