From: Yukihiro Matsumoto Date: 2009-05-21T08:53:31+09:00 Subject: Re: gsub choking on fixnum Hi, In message "Re: gsub choking on fixnum" on Thu, 21 May 2009 08:37:58 +0900, Cali Wildman writes: |Here's the code in question, I'm using REXML Document | | doc = Document.new(entry.embed_code) | doc.root.each_element('//embed | //object'){ |elem| | elem.attributes['height'] = 140 #this is line 57, see error |below | elem.attributes['width'] = 170 | } The following patch should work. matz. diff --git a/ChangeLog b/ChangeLog index b5bd805..1edb627 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Thu May 21 08:50:58 2009 Yukihiro Matsumoto + + * lib/rexml/text.rb (REXML::Text.normalize): call to_s for input. + [ruby-talk:337069] + Mon May 18 21:40:11 2009 Tanaka Akira * lib/pathname.rb (Pathname#sub): suppress a warning. diff --git a/lib/rexml/text.rb b/lib/rexml/text.rb index 2bc0042..a4a30b6 100644 --- a/lib/rexml/text.rb +++ b/lib/rexml/text.rb @@ -286,7 +286,7 @@ module REXML EREFERENCE = /&(?!#{Entity::NAME};)/ # Escapes all possible entities def Text::normalize( input, doctype=nil, entity_filter=nil ) - copy = input + copy = input.to_s # Doing it like this rather than in a loop improves the speed #copy = copy.gsub( EREFERENCE, '&' ) copy = copy.gsub( "&", "&" )