From 4a481ad400a88e704d07c68aa8112c2a28bdf2c9 Mon Sep 17 00:00:00 2001 From: hsbt Date: Sun, 28 Dec 2014 22:29:11 +0000 Subject: [PATCH] * ext/json, test/json: merge JSON HEAD(17fe8e7) https://github.com/flori/json/compare/v1.8.1...17fe8e7 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49051 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ ext/json/generator/generator.c | 20 ++++++++++---------- ext/json/generator/generator.h | 2 +- ext/json/lib/json/add/complex.rb | 8 +++++++- ext/json/lib/json/add/rational.rb | 5 +++++ ext/json/lib/json/add/time.rb | 2 +- ext/json/lib/json/common.rb | 8 ++++---- ext/json/parser/parser.c | 4 ++-- ext/json/parser/parser.rl | 2 +- test/json/test_json.rb | 6 ++++++ 10 files changed, 42 insertions(+), 20 deletions(-) diff --git a/ChangeLog b/ChangeLog index 557b981aad..f9019ec555 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Mon Dec 29 07:27:23 2014 SHIBATA Hiroshi + + * ext/json, test/json: merge JSON HEAD(17fe8e7) + https://github.com/flori/json/compare/v1.8.1...17fe8e7 + Sun Dec 28 23:49:37 2014 Michal Papis * rbinstall.rb: fix target location for installing bundled gems. diff --git a/ext/json/generator/generator.c b/ext/json/generator/generator.c index 1b7f036a5d..aee385e08b 100644 --- a/ext/json/generator/generator.c +++ b/ext/json/generator/generator.c @@ -676,7 +676,7 @@ static VALUE cState_to_h(VALUE self) /* * call-seq: [](name) * -* Return the value returned by method +name+. +* Returns the value returned by method +name+. */ static VALUE cState_aref(VALUE self, VALUE name) { @@ -691,7 +691,7 @@ static VALUE cState_aref(VALUE self, VALUE name) /* * call-seq: []=(name, value) * -* Set the attribute name to value. +* Sets the attribute name to value. */ static VALUE cState_aset(VALUE self, VALUE name, VALUE value) { @@ -988,7 +988,7 @@ static VALUE cState_initialize(int argc, VALUE *argv, VALUE self) /* * call-seq: initialize_copy(orig) * - * Initializes this object from orig if it to be duplicated/cloned and returns + * Initializes this object from orig if it can be duplicated/cloned and returns * it. */ static VALUE cState_init_copy(VALUE obj, VALUE orig) @@ -1036,7 +1036,7 @@ static VALUE cState_from_state_s(VALUE self, VALUE opts) /* * call-seq: indent() * - * This string is used to indent levels in the JSON text. + * Returns the string that is used to indent levels in the JSON text. */ static VALUE cState_indent(VALUE self) { @@ -1047,7 +1047,7 @@ static VALUE cState_indent(VALUE self) /* * call-seq: indent=(indent) * - * This string is used to indent levels in the JSON text. + * Sets the string that is used to indent levels in the JSON text. */ static VALUE cState_indent_set(VALUE self, VALUE indent) { @@ -1072,7 +1072,7 @@ static VALUE cState_indent_set(VALUE self, VALUE indent) /* * call-seq: space() * - * This string is used to insert a space between the tokens in a JSON + * Returns the string that is used to insert a space between the tokens in a JSON * string. */ static VALUE cState_space(VALUE self) @@ -1084,7 +1084,7 @@ static VALUE cState_space(VALUE self) /* * call-seq: space=(space) * - * This string is used to insert a space between the tokens in a JSON + * Sets _space_ to the string that is used to insert a space between the tokens in a JSON * string. */ static VALUE cState_space_set(VALUE self, VALUE space) @@ -1110,7 +1110,7 @@ static VALUE cState_space_set(VALUE self, VALUE space) /* * call-seq: space_before() * - * This string is used to insert a space before the ':' in JSON objects. + * Returns the string that is used to insert a space before the ':' in JSON objects. */ static VALUE cState_space_before(VALUE self) { @@ -1121,7 +1121,7 @@ static VALUE cState_space_before(VALUE self) /* * call-seq: space_before=(space_before) * - * This string is used to insert a space before the ':' in JSON objects. + * Sets the string that is used to insert a space before the ':' in JSON objects. */ static VALUE cState_space_before_set(VALUE self, VALUE space_before) { @@ -1328,7 +1328,7 @@ static VALUE cState_depth_set(VALUE self, VALUE depth) /* * call-seq: buffer_initial_length * - * This integer returns the current inital length of the buffer. + * This integer returns the current initial length of the buffer. */ static VALUE cState_buffer_initial_length(VALUE self) { diff --git a/ext/json/generator/generator.h b/ext/json/generator/generator.h index a583971d9f..b2d2f0a17c 100644 --- a/ext/json/generator/generator.h +++ b/ext/json/generator/generator.h @@ -23,7 +23,7 @@ #define option_given_p(opts, key) RTEST(rb_funcall(opts, i_key_p, 1, key)) -/* unicode defintions */ +/* unicode definitions */ #define UNI_STRICT_CONVERSION 1 diff --git a/ext/json/lib/json/add/complex.rb b/ext/json/lib/json/add/complex.rb index d7ebebf5f7..2723f60103 100644 --- a/ext/json/lib/json/add/complex.rb +++ b/ext/json/lib/json/add/complex.rb @@ -4,10 +4,15 @@ end defined?(::Complex) or require 'complex' class Complex + + # Deserializes JSON string by converting Real value r, imaginary + # value i, to a Complex object. def self.json_create(object) Complex(object['r'], object['i']) end + # Returns a hash, that will be turned into a JSON object and represent this + # object. def as_json(*) { JSON.create_id => self.class.name, @@ -16,7 +21,8 @@ class Complex } end + # Stores class name (Complex) along with real value r and imaginary value i as JSON string def to_json(*) as_json.to_json end -end +end \ No newline at end of file diff --git a/ext/json/lib/json/add/rational.rb b/ext/json/lib/json/add/rational.rb index 867cd92f05..ee39c20e8d 100644 --- a/ext/json/lib/json/add/rational.rb +++ b/ext/json/lib/json/add/rational.rb @@ -4,10 +4,14 @@ end defined?(::Rational) or require 'rational' class Rational + # Deserializes JSON string by converting numerator value n, + # denominator value d, to a Rational object. def self.json_create(object) Rational(object['n'], object['d']) end + # Returns a hash, that will be turned into a JSON object and represent this + # object. def as_json(*) { JSON.create_id => self.class.name, @@ -16,6 +20,7 @@ class Rational } end + # Stores class name (Rational) along with numerator value n and denominator value d as JSON string def to_json(*) as_json.to_json end diff --git a/ext/json/lib/json/add/time.rb b/ext/json/lib/json/add/time.rb index 338209d899..d9834677ac 100644 --- a/ext/json/lib/json/add/time.rb +++ b/ext/json/lib/json/add/time.rb @@ -10,7 +10,7 @@ class Time if usec = object.delete('u') # used to be tv_usec -> tv_nsec object['n'] = usec * 1000 end - if instance_methods.include?(:tv_nsec) + if method_defined?(:tv_nsec) at(object['s'], Rational(object['n'], 1000)) else at(object['s'], object['n'] / 1000) diff --git a/ext/json/lib/json/common.rb b/ext/json/lib/json/common.rb index 8fbaa2baad..f44184e138 100644 --- a/ext/json/lib/json/common.rb +++ b/ext/json/lib/json/common.rb @@ -148,7 +148,7 @@ module JSON # the default. # * *create_additions*: If set to false, the Parser doesn't create # additions even if a matching class and create_id was found. This option - # defaults to true. + # defaults to false. # * *object_class*: Defaults to Hash # * *array_class*: Defaults to Array def parse(source, opts = {}) @@ -169,7 +169,7 @@ module JSON # to true. # * *create_additions*: If set to false, the Parser doesn't create # additions even if a matching class and create_id was found. This option - # defaults to true. + # defaults to false. def parse!(source, opts = {}) opts = { :max_nesting => false, @@ -390,7 +390,7 @@ module JSON end end opts = JSON.dump_default_options - limit and opts.update(:max_nesting => limit) + opts = opts.merge(:max_nesting => limit) if limit result = generate(obj, opts) if anIO anIO.write result @@ -411,7 +411,7 @@ module JSON string end - # Shortuct for iconv. + # Shortcut for iconv. if ::String.method_defined?(:encode) # Encodes string using Ruby's _String.encode_ def self.iconv(to, from, string) diff --git a/ext/json/parser/parser.c b/ext/json/parser/parser.c index b692cb43b6..f4617aae44 100644 --- a/ext/json/parser/parser.c +++ b/ext/json/parser/parser.c @@ -1626,8 +1626,8 @@ static VALUE convert_encoding(VALUE source) * (keys) in a JSON object. Otherwise strings are returned, which is also * the default. * * *create_additions*: If set to false, the Parser doesn't create - * additions even if a matchin class and create_id was found. This option - * defaults to true. + * additions even if a matching class and create_id was found. This option + * defaults to false. * * *object_class*: Defaults to Hash * * *array_class*: Defaults to Array */ diff --git a/ext/json/parser/parser.rl b/ext/json/parser/parser.rl index e69fe57781..9bc5efb66c 100644 --- a/ext/json/parser/parser.rl +++ b/ext/json/parser/parser.rl @@ -610,7 +610,7 @@ static VALUE convert_encoding(VALUE source) * (keys) in a JSON object. Otherwise strings are returned, which is also * the default. * * *create_additions*: If set to false, the Parser doesn't create - * additions even if a matchin class and create_id was found. This option + * additions even if a matching class and create_id was found. This option * defaults to true. * * *object_class*: Defaults to Hash * * *array_class*: Defaults to Array diff --git a/test/json/test_json.rb b/test/json/test_json.rb index 462650e861..7957773f23 100755 --- a/test/json/test_json.rb +++ b/test/json/test_json.rb @@ -517,6 +517,12 @@ EOT assert_equal too_deep, output.string end + def test_dump_should_modify_defaults + max_nesting = JSON.dump_default_options[:max_nesting] + JSON.dump([], StringIO.new, 10) + assert_equal max_nesting, JSON.dump_default_options[:max_nesting] + end + def test_big_integers json1 = JSON([orig = (1 << 31) - 1]) assert_equal orig, JSON[json1][0]