diff options
author | ser <ser@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-12-30 16:35:45 +0000 |
---|---|---|
committer | ser <ser@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-12-30 16:35:45 +0000 |
commit | f8d68a248260e721bf756a17fcac6bf1e218e66f (patch) | |
tree | 38e048a85c10ebbe2b7cb84a61ae570ca26ba30a /lib/rexml/parent.rb | |
parent | 2ffedb5f291d8d420ff3a197bba62bd3b329a1db (diff) |
All of the tickets and issues mentioned in this log can be found at:
http://www.germane-software.com/projects/rexml/ticket/#
where '#' is the issue or ticket number.
* Fixes ticket:3 (Issue38 in Roundup.) However, this needs further testing.
* Fixed a couple of bugs in the SAX2 parser, plus a bunch of other changes I
don't remember.
* More XPath ordering testing added
* Fixed the documentation WRT the raw mode of text nodes (ticket:4)
* Fixes roundup issue 43: substring-after bug.
See: http://www.germane-software.com/cgi-bin/roundup/rexml/issue43
* Fixed issue44, Element#xpath
* Patch submitted by an anonymous doner to allow parsing of Tempfiles. I was
hoping that, by now, that whole Source thing would have been changed to use
duck typing and avoid this sort of issue... but in the meantime, the patch
has been applied.
* Fixes ticket:30, XPath default namespace bug. The fix was provided
by Lucas Nussbaum.
* Aliases #size to #length, as per zdennis's request.
* Fixes typo from previous commit
* Fixes ticket #32 (and adds a unit test)
* Merges a user-contributed patch for issue #40
* Changes Date, Version, and Copyright to upper case, to avoid conflicts with
the Date class.
* Minor, yet incomplete, documentation changes.
* Resolves issue #34 (SAX parser change makes it impossible to parse IO feeds.)
* Moves parser.source.position() to parser.position()
* Improves the build script (less work for me to package a distribution)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@9776 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rexml/parent.rb')
-rw-r--r-- | lib/rexml/parent.rb | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/lib/rexml/parent.rb b/lib/rexml/parent.rb index 5c1ed97324..cc74a40666 100644 --- a/lib/rexml/parent.rb +++ b/lib/rexml/parent.rb @@ -31,9 +31,11 @@ module REXML end def delete( object ) - return unless @children.include? object - @children.delete object - object.parent = nil + found = false + @children.delete_if {|c| + c.equal?(object) and found = true + } + object.parent = nil if found end def each(&block) @@ -131,15 +133,16 @@ module REXML @children.size end + alias :length :size + # Replaces one child with another, making sure the nodelist is correct # @param to_replace the child to replace (must be a Child) # @param replacement the child to insert into the nodelist (must be a # Child) def replace_child( to_replace, replacement ) - ind = @children.index( to_replace ) - to_replace.parent = nil - @children[ind,0] = replacement - replacement.parent = self + @children.map! {|c| c.equal?( to_replace ) ? replacement : c } + to_replace.parent = nil + replacement.parent = self end # Deeply clones this object. This creates a complete duplicate of this |