diff options
author | ser <ser@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-03-28 22:36:15 +0000 |
---|---|---|
committer | ser <ser@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-03-28 22:36:15 +0000 |
commit | 6a738f22656ffe247bcd02cf354c12a5370818ec (patch) | |
tree | de60322b5ac4273012fd95e6911cbe9bcc7d9ad2 /lib/rexml/text.rb | |
parent | adb4439f85466a58378ba37a426e5f87a115a74e (diff) |
Documentation fixes and a patch to fix whitespace handling.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6043 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rexml/text.rb')
-rw-r--r-- | lib/rexml/text.rb | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/lib/rexml/text.rb b/lib/rexml/text.rb index 6f94ca4ba1..2e54f9fa11 100644 --- a/lib/rexml/text.rb +++ b/lib/rexml/text.rb @@ -175,6 +175,20 @@ module REXML return string[0,place] + "\n" + wrap(string[place+1..-1], width) end end + + # Sets the contents of this text node. This expects the text to be + # unnormalized. It returns self. + # + # e = Element.new( "a" ) + # e.add_text( "foo" ) # <a>foo</a> + # e[0].value = "bar" # <a>bar</a> + # e[0].value = "<a>" # <a><a></a> + def value=( val ) + @string = val.gsub( /\r\n?/, "\n" ) + @unnormalized = nil + @normalized = nil + @raw = false + end def indent(string, level=1, style="\t", indentfirstline=true) return string if level < 0 @@ -190,17 +204,13 @@ module REXML def write( writer, indent=-1, transitive=false, ie_hack=false ) s = to_s() - if not (@parent and @parent.whitespace) then - s = wrap(s, 60, false) if @parent and @parent.context[:wordwrap] == :all - if @parent and not @parent.context[:indentstyle].nil? then - indentstyle = @parent.context[:indentstyle] - else - indentstyle = ' ' - end - if s.count("\n") > 0 and indent > 0 then - s = indent(s, indent, indentstyle, false) - end - end + if not (@parent and @parent.whitespace) then + s = wrap(s, 60, false) if @parent and @parent.context[:wordwrap] == :all + if @parent and not @parent.context[:indentstyle].nil? and indent > 0 and s.count("\n") > 0 + s = indent(s, indent, @parent.context[:indentstyle], false) + end + s.squeeze!(" \n\t") if @parent and !@parent.whitespace + end writer << s end |