From 12d3325346842b309e58e6eabd11e34ec5a8c615 Mon Sep 17 00:00:00 2001 From: ocean Date: Tue, 10 Jan 2006 03:50:28 +0000 Subject: [PATCH] * lib/yaml/rubytypes.rb (Fixnum): Bignum could not be loaded in ruby 1.8.3/1.8.4. [ruby-core:6115] * lib/yaml/rubytypes.rb (Numeric): Subclass of Numeric could not be dumped properly. [ruby-core:7047] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9816 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 8 ++++++++ lib/yaml/rubytypes.rb | 22 ++++++++++++---------- test/yaml/test_yaml.rb | 17 +++++++++++++++++ 3 files changed, 37 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 26b8b8af13..1cb25628d5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +Tue Jan 10 12:47:41 2006 Hirokazu Yamamoto + + * lib/yaml/rubytypes.rb (Fixnum): Bignum could not be loaded in + ruby 1.8.3/1.8.4. [ruby-core:6115] + + * lib/yaml/rubytypes.rb (Numeric): Subclass of Numeric could not + be dumped properly. [ruby-core:7047] + Tue Jan 10 12:00:48 2006 Aaron Schrab * lib/yaml/rubytypes.rb (Symbol#yaml_new): YAML loading of quoted diff --git a/lib/yaml/rubytypes.rb b/lib/yaml/rubytypes.rb index d58e9bb38e..eebf027135 100644 --- a/lib/yaml/rubytypes.rb +++ b/lib/yaml/rubytypes.rb @@ -353,7 +353,17 @@ class Date end end -class Numeric +class Integer + yaml_as "tag:yaml.org,2002:int" + def to_yaml( opts = {} ) + YAML::quick_emit( nil, opts ) do |out| + out.scalar( "tag:yaml.org,2002:int", self.to_s, :plain ) + end + end +end + +class Float + yaml_as "tag:yaml.org,2002:float" def to_yaml( opts = {} ) YAML::quick_emit( nil, opts ) do |out| str = self.to_s @@ -364,19 +374,11 @@ class Numeric elsif str == "NaN" str = ".NaN" end - out.scalar( taguri, str, :plain ) + out.scalar( "tag:yaml.org,2002:float", str, :plain ) end end end -class Fixnum - yaml_as "tag:yaml.org,2002:int" -end - -class Float - yaml_as "tag:yaml.org,2002:float" -end - class TrueClass yaml_as "tag:yaml.org,2002:bool#yes" def to_yaml( opts = {} ) diff --git a/test/yaml/test_yaml.rb b/test/yaml/test_yaml.rb index fe506675f3..78a0877300 100644 --- a/test/yaml/test_yaml.rb +++ b/test/yaml/test_yaml.rb @@ -1236,6 +1236,23 @@ EOY assert_cycle(:"^foo") end + # + # Test Numeric cycle + # + class NumericTest < Numeric + def initialize(value) + @value = value + end + def ==(other) + @value == other.instance_eval{ @value } + end + end + def test_numeric_cycle + assert_cycle(1) # Fixnum + assert_cycle(111111111111111111111111111111111) # Bignum + assert_cycle(NumericTest.new(3)) # Subclass of Numeric + end + end if $0 == __FILE__