* ext/psych/lib/psych/visitors/to_ruby.rb: Ruby modules can be loaded

from YAML files.
* ext/psych/lib/psych/visitors/yaml_tree.rb: Ruby modules can be
  dumped to YAML files.
* test/psych/test_class.rb: corresponding test.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31960 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
tenderlove 2011-06-09 00:22:33 +00:00
Родитель a8cc42d1ff
Коммит aaa52bf088
4 изменённых файлов: 31 добавлений и 1 удалений

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

@ -1,3 +1,11 @@
Thu Jun 9 09:18:51 2011 Aaron Patterson <aaron@tenderlovemaking.com>
* ext/psych/lib/psych/visitors/to_ruby.rb: Ruby modules can be loaded
from YAML files.
* ext/psych/lib/psych/visitors/yaml_tree.rb: Ruby modules can be
dumped to YAML files.
* test/psych/test_class.rb: corresponding test.
Thu Jun 9 09:05:04 2011 Aaron Patterson <aaron@tenderlovemaking.com>
* ext/psych/lib/psych/visitors/to_ruby.rb: Ruby classes can be loaded

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

@ -57,7 +57,7 @@ module Psych
Complex(o.value)
when "!ruby/object:Rational"
Rational(o.value)
when "!ruby/class"
when "!ruby/class", "!ruby/module"
resolve_class o.value
when "tag:yaml.org,2002:float", "!float"
Float(@ss.tokenize(o.value))

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

@ -246,6 +246,11 @@ module Psych
end
end
def visit_Module o
raise TypeError, "can't dump anonymous module: #{o}" unless o.name
@emitter.scalar o.name, nil, '!ruby/module', false, false, Nodes::Scalar::SINGLE_QUOTED
end
def visit_Class o
raise TypeError, "can't dump anonymous class: #{o}" unless o.name
@emitter.scalar o.name, nil, '!ruby/class', false, false, Nodes::Scalar::SINGLE_QUOTED

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

@ -2,12 +2,21 @@ require 'psych/helper'
module Psych
class TestClass < TestCase
module Foo
end
def test_cycle_anonymous_class
assert_raises(::TypeError) do
assert_cycle(Class.new)
end
end
def test_cycle_anonymous_module
assert_raises(::TypeError) do
assert_cycle(Module.new)
end
end
def test_cycle
assert_cycle(TestClass)
end
@ -15,5 +24,13 @@ module Psych
def test_dump
Psych.dump TestClass
end
def test_cycle_module
assert_cycle(Foo)
end
def test_dump_module
Psych.dump Foo
end
end
end