diff --git a/ChangeLog b/ChangeLog index 67ae0bff0e..a8d6391b8e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Wed Aug 31 15:54:11 2011 NARUSE, Yui + + * ext/json: Merge json gem v1.5.4 (3dab4c5a6a97fac03dac). + Wed Aug 31 13:09:41 2011 Marc-Andre Lafortune * numeric.c (flo_round): Avoid overflow by optimizing for trivial diff --git a/ext/json/generator/generator.c b/ext/json/generator/generator.c index 9a90d5f182..9ad037cd40 100644 --- a/ext/json/generator/generator.c +++ b/ext/json/generator/generator.c @@ -1001,6 +1001,8 @@ static VALUE cState_generate(VALUE self, VALUE obj) * * *allow_nan*: true if NaN, Infinity, and -Infinity should be * generated, otherwise an exception is thrown, if these values are * encountered. This options defaults to false. + * * *quirks_mode*: Enables quirks_mode for parser, that is for example + * generating single JSON values instead of documents is possible. */ static VALUE cState_initialize(int argc, VALUE *argv, VALUE self) { diff --git a/ext/json/lib/json/add/complex.rb b/ext/json/lib/json/add/complex.rb new file mode 100644 index 0000000000..d7ebebf5f7 --- /dev/null +++ b/ext/json/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/ext/json/lib/json/add/core.rb b/ext/json/lib/json/add/core.rb index 4624be22c2..1ae00d01a5 100644 --- a/ext/json/lib/json/add/core.rb +++ b/ext/json/lib/json/add/core.rb @@ -241,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/ext/json/lib/json/add/rational.rb b/ext/json/lib/json/add/rational.rb new file mode 100644 index 0000000000..867cd92f05 --- /dev/null +++ b/ext/json/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/ext/json/parser/parser.c b/ext/json/parser/parser.c index 4ea663c721..d1d14c79ca 100644 --- a/ext/json/parser/parser.c +++ b/ext/json/parser/parser.c @@ -1618,6 +1618,9 @@ static VALUE convert_encoding(VALUE source) * defaults to true. * * *object_class*: Defaults to Hash * * *array_class*: Defaults to Array + * * *quirks_mode*: Enables quirks_mode for parser, that is for example + * parsing single JSON values instead of documents is possible. + * */ static VALUE cParser_initialize(int argc, VALUE *argv, VALUE self) { diff --git a/test/json/test_json_addition.rb b/test/json/test_json_addition.rb index f28f228c22..6297578f1f 100755 --- a/test/json/test_json_addition.rb +++ b/test/json/test_json_addition.rb @@ -3,7 +3,7 @@ require 'test/unit' require File.join(File.dirname(__FILE__), 'setup_variant') -load 'json/add/core.rb' +require 'json/add/core.rb' require 'date' class TC_JSONAddition < Test::Unit::TestCase