[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]