diff options
| author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-11-06 22:36:07 +0000 |
|---|---|---|
| committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-11-06 22:36:07 +0000 |
| commit | 5cd42d40d30143be26129c2f1b1622da6b919dda (patch) | |
| tree | 4b228174576bb81459dc6c7b93049adfce417293 /lib | |
| parent | 98ea943cbb9eb94d258c407e645e784aa3256709 (diff) | |
| download | ruby-5cd42d40d30143be26129c2f1b1622da6b919dda.tar.gz ruby-5cd42d40d30143be26129c2f1b1622da6b919dda.tar.xz ruby-5cd42d40d30143be26129c2f1b1622da6b919dda.zip | |
* lib/yaml/rubytypes.rb: support Rational and Complex as 1.8
does. a patch from Hiroshi Moriyama in [ruby-dev:36899].
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@20126 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/yaml/rubytypes.rb | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/yaml/rubytypes.rb b/lib/yaml/rubytypes.rb index 35b719196..ae65b355e 100644 --- a/lib/yaml/rubytypes.rb +++ b/lib/yaml/rubytypes.rb @@ -379,6 +379,44 @@ class Float end end +class Rational + yaml_as "tag:ruby.yaml.org,2002:object:Rational" + def Rational.yaml_new( klass, tag, val ) + if val.is_a? String + Rational( val ) + else + Rational( val['numerator'], val['denominator'] ) + end + end + def to_yaml( opts = {} ) + YAML::quick_emit( self, opts ) do |out| + out.map( taguri, nil ) do |map| + map.add( 'denominator', denominator ) + map.add( 'numerator', numerator ) + end + end + end +end + +class Complex + yaml_as "tag:ruby.yaml.org,2002:object:Complex" + def Complex.yaml_new( klass, tag, val ) + if val.is_a? String + Complex( val ) + else + Complex( val['real'], val['image'] ) + end + end + def to_yaml( opts = {} ) + YAML::quick_emit( self, opts ) do |out| + out.map( taguri, nil ) do |map| + map.add( 'image', imaginary ) + map.add( 'real', real ) + end + end + end +end + class TrueClass yaml_as "tag:yaml.org,2002:bool#yes" def to_yaml( opts = {} ) |
