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 | |
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.
-rw-r--r-- | .gitignore | 1 | ||||
-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 | ||||
-rwxr-xr-x | tests/test_json_addition.rb | 4 |
5 files changed, 48 insertions, 39 deletions
@@ -5,3 +5,4 @@ pkg .idea java/Json.iml Gemfile.lock +.rvmrc 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 diff --git a/tests/test_json_addition.rb b/tests/test_json_addition.rb index f28f228..9f578a4 100755 --- a/tests/test_json_addition.rb +++ b/tests/test_json_addition.rb @@ -3,7 +3,9 @@ require 'test/unit' require File.join(File.dirname(__FILE__), 'setup_variant') -load 'json/add/core.rb' +require 'json/add/core' +require 'json/add/complex' +require 'json/add/rational' require 'date' class TC_JSONAddition < Test::Unit::TestCase |