summaryrefslogtreecommitdiff
path: root/ext/json/lib/json/add
diff options
context:
space:
mode:
authornaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-08-30 02:23:12 +0000
committernaruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-08-30 02:23:12 +0000
commitb14c060ddabfad99deff3e56d847034f7d0946be (patch)
treec3ac0ee69619b22e2cf3f9c29bbe5ae4005a3b4c /ext/json/lib/json/add
parent2dd9d721ed6820a584654c82f4ae1d6331f78a9e (diff)
* ext/json: Merge json gem 1.5.4+ (2149f4185c598fb97db1).
[Bug #5173] [ruby-core:38866] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33122 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/json/lib/json/add')
-rw-r--r--ext/json/lib/json/add/core.rb42
1 files changed, 40 insertions, 2 deletions
diff --git a/ext/json/lib/json/add/core.rb b/ext/json/lib/json/add/core.rb
index e9850af8f6..fde53a4d01 100644
--- a/ext/json/lib/json/add/core.rb
+++ b/ext/json/lib/json/add/core.rb
@@ -5,6 +5,8 @@ unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
require 'json'
end
require 'date'
+require 'complex'
+require 'rational'
# Symbol serialization/deserialization
class Symbol
@@ -230,8 +232,8 @@ class Regexp
def as_json(*)
{
JSON.create_id => self.class.name,
- 'o' => options,
- 's' => source,
+ 'o' => options,
+ 's' => source,
}
end
@@ -241,3 +243,39 @@ 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