summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--lib/json/add/complex.rb22
-rw-r--r--lib/json/add/core.rb38
-rw-r--r--lib/json/add/rational.rb22
-rwxr-xr-xtests/test_json_addition.rb4
5 files changed, 48 insertions, 39 deletions
diff --git a/.gitignore b/.gitignore
index 7557261..726ffce 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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