-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
XML::Node.new('foo') << XML::Node.new('bar') << XML::Node.new('baz')
Should produce:
<foo><bar><baz/></bar></foo>
XML::Node<<(arg) should return the argument being appended *ONLY
IF* the argument is an XML::Node, else it should return the xmlNode
that had its content modified (e.g. XML::Attributes and Strings).
That should solve this problem.
So in this case the first << returns the 'bar' node and the second
<< returns the baz node.
Thus:
node = XML::Node.new('foo') << XML::Node.new('bar') <<
XML::Node.new('baz')
node is baz. Which is annoying, because most of the time I imagine
you want foo (at least I want foo). Thus, returning the appended
argument is great, until the very end, where you want the original
node...
ahahahaa... doh! Annoying and equally confusing. Since this is a
fragment, what about:
node = (XML::Node.new('foo') << XML::Node.new('bar') <<
XML::Node.new('baz')).root
or
node = (XML::Node.new('foo') << XML::Node.new('bar') <<
XML::Node.new('baz')).parent!
where "parent!" recursively searches for the parent node that has a
null parent (??). I'm guessing the most common situation is going to
be finding a node in a document, then modifying it.
Preserving an easy to use syntax for chaining nodes when building a
fragment is more important than an assignment. Is that an acceptable
argument to everyone? Feel free to debate this point!
- -sc
- --
Sean Chittenden
[EMAIL PROTECTED]
-----BEGIN PGP SIGNATURE-----
iEYEARECAAYFAkit2eAACgkQTrydwWwuXhawEQCff1y9cm8HIxInKCz/318Cy8xx
NKAAmwUs622pU+ScMyLU/oIGsCQ6nRrD
=UOJa
-----END PGP SIGNATURE-----
_______________________________________________
libxml-devel mailing list
libxml-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/libxml-devel