ruby-changes:36970
From: hsbt <ko1@a...>
Date: Mon, 29 Dec 2014 07:29:32 +0900 (JST)
Subject: [ruby-changes:36970] hsbt:r49051 (trunk): * ext/json, test/json: merge JSON HEAD(17fe8e7)
hsbt 2014-12-29 07:29:11 +0900 (Mon, 29 Dec 2014) New Revision: 49051 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=49051 Log: * ext/json, test/json: merge JSON HEAD(17fe8e7) https://github.com/flori/json/compare/v1.8.1...17fe8e7 Modified files: trunk/ChangeLog trunk/ext/json/generator/generator.c trunk/ext/json/generator/generator.h trunk/ext/json/lib/json/add/complex.rb trunk/ext/json/lib/json/add/rational.rb trunk/ext/json/lib/json/add/time.rb trunk/ext/json/lib/json/common.rb trunk/ext/json/parser/parser.c trunk/ext/json/parser/parser.rl trunk/test/json/test_json.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 49050) +++ ChangeLog (revision 49051) @@ -1,3 +1,8 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1 +Mon Dec 29 07:27:23 2014 SHIBATA Hiroshi <shibata.hiroshi@g...> + + * 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 <mpapis@g...> * rbinstall.rb: fix target location for installing bundled gems. Index: ext/json/generator/generator.c =================================================================== --- ext/json/generator/generator.c (revision 49050) +++ ext/json/generator/generator.c (revision 49051) @@ -676,7 +676,7 @@ static VALUE cState_to_h(VALUE self) https://github.com/ruby/ruby/blob/trunk/ext/json/generator/generator.c#L676 /* * 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, VAL https://github.com/ruby/ruby/blob/trunk/ext/json/generator/generator.c#L691 /* * 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, https://github.com/ruby/ruby/blob/trunk/ext/json/generator/generator.c#L988 /* * 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 s https://github.com/ruby/ruby/blob/trunk/ext/json/generator/generator.c#L1036 /* * 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) https://github.com/ruby/ruby/blob/trunk/ext/json/generator/generator.c#L1047 /* * 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 sel https://github.com/ruby/ruby/blob/trunk/ext/json/generator/generator.c#L1072 /* * 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) https://github.com/ruby/ruby/blob/trunk/ext/json/generator/generator.c#L1084 /* * 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 https://github.com/ruby/ruby/blob/trunk/ext/json/generator/generator.c#L1110 /* * 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 s https://github.com/ruby/ruby/blob/trunk/ext/json/generator/generator.c#L1121 /* * 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 https://github.com/ruby/ruby/blob/trunk/ext/json/generator/generator.c#L1328 /* * 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) { Index: ext/json/generator/generator.h =================================================================== --- ext/json/generator/generator.h (revision 49050) +++ ext/json/generator/generator.h (revision 49051) @@ -23,7 +23,7 @@ https://github.com/ruby/ruby/blob/trunk/ext/json/generator/generator.h#L23 #define option_given_p(opts, key) RTEST(rb_funcall(opts, i_key_p, 1, key)) -/* unicode defintions */ +/* unicode definitions */ #define UNI_STRICT_CONVERSION 1 Index: ext/json/lib/json/add/time.rb =================================================================== --- ext/json/lib/json/add/time.rb (revision 49050) +++ ext/json/lib/json/add/time.rb (revision 49051) @@ -10,7 +10,7 @@ class Time https://github.com/ruby/ruby/blob/trunk/ext/json/lib/json/add/time.rb#L10 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) Index: ext/json/lib/json/add/complex.rb =================================================================== --- ext/json/lib/json/add/complex.rb (revision 49050) +++ ext/json/lib/json/add/complex.rb (revision 49051) @@ -4,10 +4,15 @@ end https://github.com/ruby/ruby/blob/trunk/ext/json/lib/json/add/complex.rb#L4 defined?(::Complex) or require 'complex' class Complex + + # Deserializes JSON string by converting Real value <tt>r</tt>, imaginary + # value <tt>i</tt>, 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 https://github.com/ruby/ruby/blob/trunk/ext/json/lib/json/add/complex.rb#L21 } end + # Stores class name (Complex) along with real value <tt>r</tt> and imaginary value <tt>i</tt> as JSON string def to_json(*) as_json.to_json end -end +end \ No newline at end of file Index: ext/json/lib/json/add/rational.rb =================================================================== --- ext/json/lib/json/add/rational.rb (revision 49050) +++ ext/json/lib/json/add/rational.rb (revision 49051) @@ -4,10 +4,14 @@ end https://github.com/ruby/ruby/blob/trunk/ext/json/lib/json/add/rational.rb#L4 defined?(::Rational) or require 'rational' class Rational + # Deserializes JSON string by converting numerator value <tt>n</tt>, + # denominator value <tt>d</tt>, 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 https://github.com/ruby/ruby/blob/trunk/ext/json/lib/json/add/rational.rb#L20 } end + # Stores class name (Rational) along with numerator value <tt>n</tt> and denominator value <tt>d</tt> as JSON string def to_json(*) as_json.to_json end Index: ext/json/lib/json/common.rb =================================================================== --- ext/json/lib/json/common.rb (revision 49050) +++ ext/json/lib/json/common.rb (revision 49051) @@ -148,7 +148,7 @@ module JSON https://github.com/ruby/ruby/blob/trunk/ext/json/lib/json/common.rb#L148 # 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 https://github.com/ruby/ruby/blob/trunk/ext/json/lib/json/common.rb#L169 # 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 https://github.com/ruby/ruby/blob/trunk/ext/json/lib/json/common.rb#L390 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 https://github.com/ruby/ruby/blob/trunk/ext/json/lib/json/common.rb#L411 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) Index: ext/json/parser/parser.rl =================================================================== --- ext/json/parser/parser.rl (revision 49050) +++ ext/json/parser/parser.rl (revision 49051) @@ -610,7 +610,7 @@ static VALUE convert_encoding(VALUE sour https://github.com/ruby/ruby/blob/trunk/ext/json/parser/parser.rl#L610 * (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 Index: ext/json/parser/parser.c =================================================================== --- ext/json/parser/parser.c (revision 49050) +++ ext/json/parser/parser.c (revision 49051) @@ -1626,8 +1626,8 @@ static VALUE convert_encoding(VALUE sour https://github.com/ruby/ruby/blob/trunk/ext/json/parser/parser.c#L1626 * (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 */ Index: test/json/test_json.rb =================================================================== --- test/json/test_json.rb (revision 49050) +++ test/json/test_json.rb (revision 49051) @@ -517,6 +517,12 @@ EOT https://github.com/ruby/ruby/blob/trunk/test/json/test_json.rb#L517 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] -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/