ruby-changes:34021
From: naruse <ko1@a...>
Date: Sun, 25 May 2014 12:33:31 +0900 (JST)
Subject: [ruby-changes:34021] naruse:r46102 (trunk): Revert "* lib/yaml.rb: Remove Psych::EngineManager [Bug #8344]"
naruse 2014-05-25 12:33:22 +0900 (Sun, 25 May 2014) New Revision: 46102 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=46102 Log: Revert "* lib/yaml.rb: Remove Psych::EngineManager [Bug #8344]" zzak is not the maintainer of yaml. This reverts commit r46097. Added files: trunk/test/psych/test_engine_manager.rb Modified files: trunk/ChangeLog trunk/NEWS trunk/lib/yaml.rb trunk/test/psych/test_yamldbm.rb trunk/test/psych/test_yamlstore.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 46101) +++ ChangeLog (revision 46102) @@ -16,11 +16,6 @@ Sun May 25 11:56:33 2014 Nobuyoshi Naka https://github.com/ruby/ruby/blob/trunk/ChangeLog#L16 start cannot exceed the size, the comparison was always false. [ruby-core:62737] [Bug #9861] -Sun May 25 11:32:42 2014 Zachary Scott <e@z...> - - * lib/yaml.rb: Remove Psych::EngineManager [Bug #8344] - * test/psych/*: ditto. - Sun May 25 10:34:15 2014 Zachary Scott <e@z...> * doc/regexp.rdoc: [DOC] Clarify whitespace matching by @allolex Index: lib/yaml.rb =================================================================== --- lib/yaml.rb (revision 46101) +++ lib/yaml.rb (revision 46102) @@ -12,6 +12,40 @@ end https://github.com/ruby/ruby/blob/trunk/lib/yaml.rb#L12 YAML = Psych # :nodoc: +module Psych # :nodoc: + # For compatibility, deprecated + class EngineManager # :nodoc: + attr_reader :yamler # :nodoc: + + def initialize # :nodoc: + @yamler = 'psych' + end + + def syck? # :nodoc: + false + end + + # Psych is always used and this method has no effect. + # + # This method is still present for compatibility. + # + # You may still use the Syck engine by installing + # the 'syck' gem and using the Syck constant. + def yamler= engine # :nodoc: + case engine + when 'syck' then warn "syck has been removed, psych is used instead" + when 'psych' then @yamler = 'psych' + else + raise(ArgumentError, "bad engine") + end + + engine + end + end + + ENGINE = EngineManager.new # :nodoc: +end + # YAML Ain't Markup Language # # This module provides a Ruby interface for data serialization in YAML format. Index: NEWS =================================================================== --- NEWS (revision 46101) +++ NEWS (revision 46102) @@ -120,9 +120,6 @@ with all sufficient information, see the https://github.com/ruby/ruby/blob/trunk/NEWS#L120 * Prime.prime? now returns false for negative numbers. This method should not be used to know the number is composite or not. [Bug #7395] -* Psych - * Removed Psych::EngineManager [Bug #8344] - === Built-in global variables compatibility issues === C API updates Index: test/psych/test_yamlstore.rb =================================================================== --- test/psych/test_yamlstore.rb (revision 46101) +++ test/psych/test_yamlstore.rb (revision 46102) @@ -7,6 +7,7 @@ module Psych https://github.com/ruby/ruby/blob/trunk/test/psych/test_yamlstore.rb#L7 class YAMLStoreTest < TestCase def setup + @engine, YAML::ENGINE.yamler = YAML::ENGINE.yamler, 'psych' @dir = Dir.mktmpdir("rubytest-file") File.chown(-1, Process.gid, @dir) @yamlstore_file = make_tmp_filename("yamlstore") @@ -14,6 +15,7 @@ module Psych https://github.com/ruby/ruby/blob/trunk/test/psych/test_yamlstore.rb#L15 end def teardown + YAML::ENGINE.yamler = @engine FileUtils.remove_entry_secure @dir end Index: test/psych/test_yamldbm.rb =================================================================== --- test/psych/test_yamldbm.rb (revision 46101) +++ test/psych/test_yamldbm.rb (revision 46102) @@ -13,6 +13,7 @@ module Psych https://github.com/ruby/ruby/blob/trunk/test/psych/test_yamldbm.rb#L13 class YAMLDBMTest < TestCase def setup + @engine, YAML::ENGINE.yamler = YAML::ENGINE.yamler, 'psych' @dir = Dir.mktmpdir("rubytest-file") File.chown(-1, Process.gid, @dir) @yamldbm_file = make_tmp_filename("yamldbm") @@ -20,6 +21,7 @@ module Psych https://github.com/ruby/ruby/blob/trunk/test/psych/test_yamldbm.rb#L21 end def teardown + YAML::ENGINE.yamler = @engine @yamldbm.clear @yamldbm.close FileUtils.remove_entry_secure @dir Index: test/psych/test_engine_manager.rb =================================================================== --- test/psych/test_engine_manager.rb (revision 0) +++ test/psych/test_engine_manager.rb (revision 46102) @@ -0,0 +1,47 @@ https://github.com/ruby/ruby/blob/trunk/test/psych/test_engine_manager.rb#L1 +require_relative 'helper' +require 'yaml' + +module Psych + class TestEngineManager < TestCase + def test_bad_engine + assert_raises(ArgumentError) do + YAML::ENGINE.yamler = 'foooo' + end + end + + def test_set_psych + YAML::ENGINE.yamler = 'psych' + assert_equal Psych, YAML + assert_equal 'psych', YAML::ENGINE.yamler + end + + A = Struct.new(:name) + + def test_dump_types + YAML::ENGINE.yamler = 'psych' + + assert_to_yaml ::Object.new + assert_to_yaml Time.now + assert_to_yaml Date.today + assert_to_yaml('a' => 'b') + assert_to_yaml A.new('foo') + assert_to_yaml %w{a b} + assert_to_yaml Exception.new('foo') + assert_to_yaml "hello!" + assert_to_yaml :fooo + assert_to_yaml(1..10) + assert_to_yaml(/hello!~/) + assert_to_yaml 1 + assert_to_yaml 1.2 + assert_to_yaml Rational(1, 2) + assert_to_yaml Complex(1, 2) + assert_to_yaml true + assert_to_yaml false + assert_to_yaml nil + end + + def assert_to_yaml obj + assert obj.to_yaml, "#{obj.class} to_yaml works" + end + end +end -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/