mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
94e117da62
@@ Fixed a CDATA pretty-printing bug. (#39) @@ r1026 | ser | 2004-07-18 09:03:02 -0400 (Sun, 18 Jul 2004) | 4 lines @@ Fixed a buffering bug in Source.rb that affected the SAX parser @@ This bug was related to how REXML determines the encoding of a file, and evinced itself by hanging on input when using the SAX parser. r1028 | ser | 2004-07-18 09:06:18 -0400 (Sun, 18 Jul 2004) | 3 lines * Minor pretty printing fix WRT CDATA segments. @@ Applied Curt Sampson's optimization improvements @@ git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6673 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
68 lines
2 KiB
Ruby
68 lines
2 KiB
Ruby
require "rexml/text"
|
|
|
|
module REXML
|
|
class CData < Text
|
|
START = '<![CDATA['
|
|
STOP = ']]>'
|
|
ILLEGAL = /(\]\]>)/
|
|
|
|
# Constructor. CData is data between <![CDATA[ ... ]]>
|
|
#
|
|
# _Examples_
|
|
# CData.new( source )
|
|
# CData.new( "Here is some CDATA" )
|
|
# CData.new( "Some unprocessed data", respect_whitespace_TF, parent_element )
|
|
def initialize( first, whitespace=true, parent=nil )
|
|
super( first, whitespace, parent, true, true, ILLEGAL )
|
|
end
|
|
|
|
# Make a copy of this object
|
|
#
|
|
# _Examples_
|
|
# c = CData.new( "Some text" )
|
|
# d = c.clone
|
|
# d.to_s # -> "Some text"
|
|
def clone
|
|
CData.new self
|
|
end
|
|
|
|
# Returns the content of this CData object
|
|
#
|
|
# _Examples_
|
|
# c = CData.new( "Some text" )
|
|
# c.to_s # -> "Some text"
|
|
def to_s
|
|
@string
|
|
end
|
|
|
|
# Generates XML output of this object
|
|
#
|
|
# output::
|
|
# Where to write the string. Defaults to $stdout
|
|
# indent::
|
|
# An integer. If -1, no indenting will be used; otherwise, the
|
|
# indentation will be this number of spaces, and children will be
|
|
# indented an additional amount. Defaults to -1.
|
|
# transitive::
|
|
# If transitive is true and indent is >= 0, then the output will be
|
|
# pretty-printed in such a way that the added whitespace does not affect
|
|
# the absolute *value* of the document -- that is, it leaves the value
|
|
# and number of Text nodes in the document unchanged.
|
|
# ie_hack::
|
|
# Internet Explorer is the worst piece of crap to have ever been
|
|
# written, with the possible exception of Windows itself. Since IE is
|
|
# unable to parse proper XML, we have to provide a hack to generate XML
|
|
# that IE's limited abilities can handle. This hack inserts a space
|
|
# before the /> on empty tags.
|
|
#
|
|
# _Examples_
|
|
# c = CData.new( " Some text " )
|
|
# c.write( $stdout ) #-> <![CDATA[ Some text ]]>
|
|
def write( output=$stdout, indent=-1, transitive=false, ie_hack=false )
|
|
#indent( output, indent ) unless transitive
|
|
output << START
|
|
output << @string
|
|
output << STOP
|
|
end
|
|
end
|
|
end
|