diff options
author | Florian Frank <flori@ping.de> | 2011-08-30 18:56:44 +0200 |
---|---|---|
committer | Florian Frank <flori@ping.de> | 2011-08-30 18:56:44 +0200 |
commit | 0dd975a6ea54b63adc7af4d1fd40b8f9ab95cf46 (patch) | |
tree | fbf9f1bfaadb5faea0776ccb16fc3b9f5f6595f9 /lib | |
parent | 2149f4185c598fb97db1cabb03d3a786bdb79385 (diff) | |
download | json-0dd975a6ea54b63adc7af4d1fd40b8f9ab95cf46.tar.gz |
Move rational and complex additions in own files
Also do not require Ruby's complex.rb and rational.rb if the top level
constants are already defined. This means Ruby 1.9 implementations are
extendend, but Ruby 1.8 implementations will require rational/complex
before they are extended. Having rational and complex additions in their
own files is an especially good thing, if one wants to avoid loading
complex and rational under Ruby 1.8.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/json/add/complex.rb | 22 | ||||
-rw-r--r-- | lib/json/add/core.rb | 38 | ||||
-rw-r--r-- | lib/json/add/rational.rb | 22 |
3 files changed, 44 insertions, 38 deletions
diff --git a/lib/json/add/complex.rb b/lib/json/add/complex.rb new file mode 100644 index 0000000..d7ebebf --- /dev/null +++ b/lib/json/add/complex.rb @@ -0,0 +1,22 @@ +unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED + require 'json' +end +defined?(::Complex) or require 'complex' + +class Complex + def self.json_create(object) + Complex(object['r'], object['i']) + end + + def as_json(*) + { + JSON.create_id => self.class.name, + 'r' => real, + 'i' => imag, + } + end + + def to_json(*) + as_json.to_json + end +end diff --git a/lib/json/add/core.rb b/lib/json/add/core.rb index fde53a4..1ae00d0 100644 --- a/lib/json/add/core.rb +++ b/lib/json/add/core.rb @@ -5,8 +5,6 @@ unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED require 'json' end require 'date' -require 'complex' -require 'rational' # Symbol serialization/deserialization class Symbol @@ -243,39 +241,3 @@ class Regexp as_json.to_json end end - -class Rational - def self.json_create(object) - Rational(object['n'], object['d']) - end - - def as_json(*) - { - JSON.create_id => self.class.name, - 'n' => numerator, - 'd' => denominator, - } - end - - def to_json(*) - as_json.to_json - end -end - -class Complex - def self.json_create(object) - Complex(object['r'], object['i']) - end - - def as_json(*) - { - JSON.create_id => self.class.name, - 'r' => real, - 'i' => imag, - } - end - - def to_json(*) - as_json.to_json - end -end diff --git a/lib/json/add/rational.rb b/lib/json/add/rational.rb new file mode 100644 index 0000000..867cd92 --- /dev/null +++ b/lib/json/add/rational.rb @@ -0,0 +1,22 @@ +unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED + require 'json' +end +defined?(::Rational) or require 'rational' + +class Rational + def self.json_create(object) + Rational(object['n'], object['d']) + end + + def as_json(*) + { + JSON.create_id => self.class.name, + 'n' => numerator, + 'd' => denominator, + } + end + + def to_json(*) + as_json.to_json + end +end |