mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* 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:
parent
a8cc42d1ff
commit
aaa52bf088
4 changed files with 31 additions and 1 deletions
|
@ -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>
|
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
|
* ext/psych/lib/psych/visitors/to_ruby.rb: Ruby classes can be loaded
|
||||||
|
|
|
@ -57,7 +57,7 @@ module Psych
|
||||||
Complex(o.value)
|
Complex(o.value)
|
||||||
when "!ruby/object:Rational"
|
when "!ruby/object:Rational"
|
||||||
Rational(o.value)
|
Rational(o.value)
|
||||||
when "!ruby/class"
|
when "!ruby/class", "!ruby/module"
|
||||||
resolve_class o.value
|
resolve_class o.value
|
||||||
when "tag:yaml.org,2002:float", "!float"
|
when "tag:yaml.org,2002:float", "!float"
|
||||||
Float(@ss.tokenize(o.value))
|
Float(@ss.tokenize(o.value))
|
||||||
|
|
|
@ -246,6 +246,11 @@ module Psych
|
||||||
end
|
end
|
||||||
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
|
def visit_Class o
|
||||||
raise TypeError, "can't dump anonymous class: #{o}" unless o.name
|
raise TypeError, "can't dump anonymous class: #{o}" unless o.name
|
||||||
@emitter.scalar o.name, nil, '!ruby/class', false, false, Nodes::Scalar::SINGLE_QUOTED
|
@emitter.scalar o.name, nil, '!ruby/class', false, false, Nodes::Scalar::SINGLE_QUOTED
|
||||||
|
|
|
@ -2,12 +2,21 @@ require 'psych/helper'
|
||||||
|
|
||||||
module Psych
|
module Psych
|
||||||
class TestClass < TestCase
|
class TestClass < TestCase
|
||||||
|
module Foo
|
||||||
|
end
|
||||||
|
|
||||||
def test_cycle_anonymous_class
|
def test_cycle_anonymous_class
|
||||||
assert_raises(::TypeError) do
|
assert_raises(::TypeError) do
|
||||||
assert_cycle(Class.new)
|
assert_cycle(Class.new)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_cycle_anonymous_module
|
||||||
|
assert_raises(::TypeError) do
|
||||||
|
assert_cycle(Module.new)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def test_cycle
|
def test_cycle
|
||||||
assert_cycle(TestClass)
|
assert_cycle(TestClass)
|
||||||
end
|
end
|
||||||
|
@ -15,5 +24,13 @@ module Psych
|
||||||
def test_dump
|
def test_dump
|
||||||
Psych.dump TestClass
|
Psych.dump TestClass
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_cycle_module
|
||||||
|
assert_cycle(Foo)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_dump_module
|
||||||
|
Psych.dump Foo
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Reference in a new issue