mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* lib/rexml/document.rb (REXML::Document#write): Accept options
Hash as argument. * test/rexml/test_document.rb: Add tests for the above change. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37353 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
134ded5d77
commit
de2e09e0bc
3 changed files with 138 additions and 5 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
Sun Oct 28 14:59:14 2012 Kouhei Sutou <kou@cozmixng.org>
|
||||||
|
|
||||||
|
* lib/rexml/document.rb (REXML::Document#write): Accept options
|
||||||
|
Hash as argument.
|
||||||
|
* test/rexml/test_document.rb: Add tests for the above change.
|
||||||
|
|
||||||
Sun Oct 28 14:09:44 2012 Kouhei Sutou <kou@cozmixng.org>
|
Sun Oct 28 14:09:44 2012 Kouhei Sutou <kou@cozmixng.org>
|
||||||
|
|
||||||
* lib/rexml/document.rb (REXML::Document#write): Fix wrong usage
|
* lib/rexml/document.rb (REXML::Document#write): Fix wrong usage
|
||||||
|
|
|
@ -144,6 +144,10 @@ module REXML
|
||||||
xml_decl().stand_alone?
|
xml_decl().stand_alone?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# :call-seq:
|
||||||
|
# doc.write(output=$stdout, indent=-1, transtive=false, ie_hack=false)
|
||||||
|
# doc.write(options={:output => $stdout, :indent => -1, :transtive => false, :ie_hack => false})
|
||||||
|
#
|
||||||
# Write the XML tree out, optionally with indent. This writes out the
|
# Write the XML tree out, optionally with indent. This writes out the
|
||||||
# entire XML document, including XML declarations, doctype declarations,
|
# entire XML document, including XML declarations, doctype declarations,
|
||||||
# and processing instructions (if any are given).
|
# and processing instructions (if any are given).
|
||||||
|
@ -154,15 +158,27 @@ module REXML
|
||||||
# specified, because it adds unnecessary bandwidth to applications such
|
# specified, because it adds unnecessary bandwidth to applications such
|
||||||
# as XML-RPC.
|
# as XML-RPC.
|
||||||
#
|
#
|
||||||
# See also the classes in the rexml/formatters package for the proper way
|
# Accept Nth argument style and options Hash style as argument.
|
||||||
# to change the default formatting of XML output
|
# The recommended style is options Hash style for one or more
|
||||||
|
# arguments case.
|
||||||
#
|
#
|
||||||
# _Examples_
|
# _Examples_
|
||||||
# Document.new("<a><b/></a>").write
|
# Document.new("<a><b/></a>").write
|
||||||
#
|
#
|
||||||
# output_string = ""
|
# output = ""
|
||||||
|
# Document.new("<a><b/></a>").write(output)
|
||||||
|
#
|
||||||
|
# output = ""
|
||||||
|
# Document.new("<a><b/></a>").write(:output => output, :indent => 2)
|
||||||
|
#
|
||||||
|
# See also the classes in the rexml/formatters package for the proper way
|
||||||
|
# to change the default formatting of XML output.
|
||||||
|
#
|
||||||
|
# _Examples_
|
||||||
|
#
|
||||||
|
# output = ""
|
||||||
# tr = Transitive.new
|
# tr = Transitive.new
|
||||||
# tr.write(Document.new("<a><b/></a>"), output_string)
|
# tr.write(Document.new("<a><b/></a>"), output)
|
||||||
#
|
#
|
||||||
# output::
|
# output::
|
||||||
# output an object which supports '<< string'; this is where the
|
# output an object which supports '<< string'; this is where the
|
||||||
|
@ -183,7 +199,23 @@ module REXML
|
||||||
# unable to parse proper XML, we have to provide a hack to generate XML
|
# 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
|
# that IE's limited abilities can handle. This hack inserts a space
|
||||||
# before the /> on empty tags. Defaults to false
|
# before the /> on empty tags. Defaults to false
|
||||||
def write( output=$stdout, indent=-1, transitive=false, ie_hack=false )
|
def write(*arguments)
|
||||||
|
if arguments.size == 1 and arguments[0].class == Hash
|
||||||
|
options = arguments[0]
|
||||||
|
|
||||||
|
output = options[:output]
|
||||||
|
indent = options[:indent]
|
||||||
|
transitive = options[:transitive]
|
||||||
|
ie_hack = options[:ie_hack]
|
||||||
|
else
|
||||||
|
output, indent, transitive, ie_hack, = *arguments
|
||||||
|
end
|
||||||
|
|
||||||
|
output ||= $stdout
|
||||||
|
indent ||= -1
|
||||||
|
transitive = false if transitive.nil?
|
||||||
|
ie_hack = false if ie_hack.nil?
|
||||||
|
|
||||||
if xml_decl.encoding != 'UTF-8' && !output.kind_of?(Output)
|
if xml_decl.encoding != 'UTF-8' && !output.kind_of?(Output)
|
||||||
output = Output.new( output, xml_decl.encoding )
|
output = Output.new( output, xml_decl.encoding )
|
||||||
end
|
end
|
||||||
|
|
|
@ -106,4 +106,99 @@ EOX
|
||||||
doc = REXML::Document.new('<?xml version="1.0" standalone= "no" ?>')
|
doc = REXML::Document.new('<?xml version="1.0" standalone= "no" ?>')
|
||||||
assert_equal('no', doc.stand_alone?, bug2539)
|
assert_equal('no', doc.stand_alone?, bug2539)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
class WriteTest < Test::Unit::TestCase
|
||||||
|
def setup
|
||||||
|
@document = REXML::Document.new(<<-EOX)
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<message>Hello world!</message>
|
||||||
|
EOX
|
||||||
|
end
|
||||||
|
|
||||||
|
class ArgumentsTest < self
|
||||||
|
def test_output
|
||||||
|
output = ""
|
||||||
|
@document.write(output)
|
||||||
|
assert_equal(<<-EOX, output)
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<message>Hello world!</message>
|
||||||
|
EOX
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_indent
|
||||||
|
output = ""
|
||||||
|
indent = 2
|
||||||
|
@document.write(output, indent)
|
||||||
|
assert_equal(<<-EOX.chomp, output)
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<message>
|
||||||
|
Hello world!
|
||||||
|
</message>
|
||||||
|
EOX
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_transitive
|
||||||
|
output = ""
|
||||||
|
indent = 2
|
||||||
|
transitive = true
|
||||||
|
@document.write(output, indent, transitive)
|
||||||
|
assert_equal(<<-EOX, output)
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<message
|
||||||
|
>Hello world!</message
|
||||||
|
>
|
||||||
|
EOX
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_ie_hack
|
||||||
|
output = ""
|
||||||
|
indent = -1
|
||||||
|
transitive = false
|
||||||
|
ie_hack = true
|
||||||
|
document = REXML::Document.new("<empty/>")
|
||||||
|
document.write(output, indent, transitive, ie_hack)
|
||||||
|
assert_equal("<empty />", output)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class OptionsTest < self
|
||||||
|
def test_output
|
||||||
|
output = ""
|
||||||
|
@document.write(:output => output)
|
||||||
|
assert_equal(<<-EOX, output)
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<message>Hello world!</message>
|
||||||
|
EOX
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_indent
|
||||||
|
output = ""
|
||||||
|
@document.write(:output => output, :indent => 2)
|
||||||
|
assert_equal(<<-EOX.chomp, output)
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<message>
|
||||||
|
Hello world!
|
||||||
|
</message>
|
||||||
|
EOX
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_transitive
|
||||||
|
output = ""
|
||||||
|
@document.write(:output => output, :indent => 2, :transitive => true)
|
||||||
|
assert_equal(<<-EOX, output)
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<message
|
||||||
|
>Hello world!</message
|
||||||
|
>
|
||||||
|
EOX
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_ie_hack
|
||||||
|
output = ""
|
||||||
|
document = REXML::Document.new("<empty/>")
|
||||||
|
document.write(:output => output, :ie_hack => true)
|
||||||
|
assert_equal("<empty />", output)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue