diff options
author | ser <ser@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-04-02 03:53:58 +0000 |
---|---|---|
committer | ser <ser@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-04-02 03:53:58 +0000 |
commit | c7138f165658f3fee5083a74efb538a2ecc518a8 (patch) | |
tree | 8b896005cadacad7a58422f55713d2bca22ef3e0 /lib/rexml/element.rb | |
parent | 7bc6f498d585257ec93b4d64b55087ac96af62a4 (diff) |
REXML changes
* The main purpose for this change is to get a fix in for nasty bug in XPath.
In the new code for the descendant-or-self axis, the document order code
was calling the wrong method to do node comparisons, causing a terrible
overhead that slowed the axis down to the point where it was unusable.
This is a common axis, also known as '//', so this fix is critical.
* Using Element#text= on a non-Text, non-String argument caused an error.
This has been changed so that the behavior is like puts() -- to_s() is
called on the object first.
* Refactored the pretty-printing code a little.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6072 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rexml/element.rb')
-rw-r--r-- | lib/rexml/element.rb | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/rexml/element.rb b/lib/rexml/element.rb index b61d811141..d616d0311f 100644 --- a/lib/rexml/element.rb +++ b/lib/rexml/element.rb @@ -455,7 +455,12 @@ module REXML # doc.root.text = 'Russell' #-> '<a><b/>Russell<c/></a>' # doc.root.text = nil #-> '<a><b/><c/></a>' def text=( text ) - text = Text.new( text, whitespace(), nil, raw() ) if text.kind_of? String + if text.kind_of? String + text = Text.new( text, whitespace(), nil, raw() ) + else + text = Text.new( text.to_s, whitespace(), nil, raw() ) unless text.kind_of? Text + end + old_text = get_text if text.nil? old_text.remove unless old_text.nil? |