Extended maintenance of Ruby 1.9.3 ended on February 23, 2015. Read more
Prints out the XML document with no formatting – except if id_hack is set.
If set to true, then inserts whitespace before the close of an empty tag, so that IE’s bad XML parser doesn’t choke.
# File rexml/formatters/default.rb, line 10
def initialize( ie_hack=false )
@ie_hack = ie_hack
end
Writes the node to some output.
The node to write
A class implementing <<. Pass in an Output object to change the output encoding.
# File rexml/formatters/default.rb, line 21
def write( node, output )
case node
when Document
if node.xml_decl.encoding != 'UTF-8' && !output.kind_of?(Output)
output = Output.new( output, node.xml_decl.encoding )
end
write_document( node, output )
when Element
write_element( node, output )
when Declaration, ElementDecl, NotationDecl, ExternalEntity, Entity,
Attribute, AttlistDecl
node.write( output,-1 )
when Instruction
write_instruction( node, output )
when DocType, XMLDecl
node.write( output )
when Comment
write_comment( node, output )
when CData
write_cdata( node, output )
when Text
write_text( node, output )
else
raise Exception.new("XML FORMATTING ERROR")
end
end
# File rexml/formatters/default.rb, line 96
def write_cdata( node, output )
output << CData::START
output << node.to_s
output << CData::STOP
end
# File rexml/formatters/default.rb, line 90
def write_comment( node, output )
output << Comment::START
output << node.to_s
output << Comment::STOP
end
# File rexml/formatters/default.rb, line 59
def write_document( node, output )
node.children.each { |child| write( child, output ) }
end
# File rexml/formatters/default.rb, line 63
def write_element( node, output )
output << "<#{node.expanded_name}"
node.attributes.to_a.map { |a|
Hash === a ? a.values : a
}.flatten.sort_by {|attr| attr.name}.each do |attr|
output << " "
attr.write( output )
end unless node.attributes.empty?
if node.children.empty?
output << " " if @ie_hack
output << "/"
else
output << ">"
node.children.each { |child|
write( child, output )
}
output << "</#{node.expanded_name}"
end
output << ">"
end
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.