* ext/psych/lib/psych.rb: Syck api compatibility [ruby-core:29157]

* ext/psych/lib/psych/nodes/node.rb: ditto
* test/psych/test_psych.rb: ditto

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27134 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
tenderlove 2010-03-31 21:09:58 +00:00
Родитель c97f5f514a
Коммит a4dbc2ea10
3 изменённых файлов: 32 добавлений и 6 удалений

Просмотреть файл

@ -153,10 +153,15 @@ module Psych
# Example:
#
# Psych.dump(['a', 'b']) # => "---\n- a\n- b\n"
def self.dump o, options = {}
def self.dump o, io = nil, options = {}
if Hash === io
options = io
io = nil
end
visitor = Psych::Visitors::YAMLTree.new options
visitor << o
visitor.tree.to_yaml
visitor.tree.to_yaml io
end
###

Просмотреть файл

@ -30,10 +30,12 @@ module Psych
# Convert this node to YAML.
#
# See also Psych::Visitors::Emitter
def to_yaml
io = StringIO.new
Visitors::Emitter.new(io).accept self
io.string
def to_yaml io = nil
real_io = io || StringIO.new
Visitors::Emitter.new(real_io).accept self
return real_io.string unless io
io
end
end
end

Просмотреть файл

@ -1,5 +1,8 @@
require_relative 'helper'
require 'stringio'
require 'tempfile'
class TestPsych < Psych::TestCase
def test_dump_stream
things = [22, "foo \n", {}]
@ -7,6 +10,22 @@ class TestPsych < Psych::TestCase
assert_equal things, Psych.load_stream(stream)
end
def test_dump_file
hash = {'hello' => 'TGIF!'}
Tempfile.open('fun.yml') do |io|
assert_equal io, Psych.dump(hash, io)
io.rewind
assert_equal Psych.dump(hash), io.read
end
end
def test_dump_io
hash = {'hello' => 'TGIF!'}
stringio = StringIO.new ''
assert_equal stringio, Psych.dump(hash, stringio)
assert_equal Psych.dump(hash), stringio.string
end
def test_simple
assert_equal 'foo', Psych.load("--- foo\n")
end