* 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
This commit is contained in:
parent
5547719573
commit
4a481ad400
@ -1,3 +1,8 @@
|
|||||||
|
Mon Dec 29 07:27:23 2014 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
|
||||||
|
|
||||||
|
* 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@gmail.com>
|
Sun Dec 28 23:49:37 2014 Michal Papis <mpapis@gmail.com>
|
||||||
|
|
||||||
* rbinstall.rb: fix target location for installing bundled gems.
|
* rbinstall.rb: fix target location for installing bundled gems.
|
||||||
|
@ -676,7 +676,7 @@ static VALUE cState_to_h(VALUE self)
|
|||||||
/*
|
/*
|
||||||
* call-seq: [](name)
|
* 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)
|
static VALUE cState_aref(VALUE self, VALUE name)
|
||||||
{
|
{
|
||||||
@ -691,7 +691,7 @@ static VALUE cState_aref(VALUE self, VALUE name)
|
|||||||
/*
|
/*
|
||||||
* call-seq: []=(name, value)
|
* 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)
|
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)
|
* 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.
|
* it.
|
||||||
*/
|
*/
|
||||||
static VALUE cState_init_copy(VALUE obj, VALUE orig)
|
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()
|
* 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)
|
static VALUE cState_indent(VALUE self)
|
||||||
{
|
{
|
||||||
@ -1047,7 +1047,7 @@ static VALUE cState_indent(VALUE self)
|
|||||||
/*
|
/*
|
||||||
* call-seq: indent=(indent)
|
* 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)
|
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()
|
* 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.
|
* string.
|
||||||
*/
|
*/
|
||||||
static VALUE cState_space(VALUE self)
|
static VALUE cState_space(VALUE self)
|
||||||
@ -1084,7 +1084,7 @@ static VALUE cState_space(VALUE self)
|
|||||||
/*
|
/*
|
||||||
* call-seq: space=(space)
|
* 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.
|
* string.
|
||||||
*/
|
*/
|
||||||
static VALUE cState_space_set(VALUE self, VALUE space)
|
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()
|
* 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)
|
static VALUE cState_space_before(VALUE self)
|
||||||
{
|
{
|
||||||
@ -1121,7 +1121,7 @@ static VALUE cState_space_before(VALUE self)
|
|||||||
/*
|
/*
|
||||||
* call-seq: space_before=(space_before)
|
* 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)
|
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
|
* 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)
|
static VALUE cState_buffer_initial_length(VALUE self)
|
||||||
{
|
{
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
#define option_given_p(opts, key) RTEST(rb_funcall(opts, i_key_p, 1, key))
|
#define option_given_p(opts, key) RTEST(rb_funcall(opts, i_key_p, 1, key))
|
||||||
|
|
||||||
/* unicode defintions */
|
/* unicode definitions */
|
||||||
|
|
||||||
#define UNI_STRICT_CONVERSION 1
|
#define UNI_STRICT_CONVERSION 1
|
||||||
|
|
||||||
|
@ -4,10 +4,15 @@ end
|
|||||||
defined?(::Complex) or require 'complex'
|
defined?(::Complex) or require 'complex'
|
||||||
|
|
||||||
class 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)
|
def self.json_create(object)
|
||||||
Complex(object['r'], object['i'])
|
Complex(object['r'], object['i'])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Returns a hash, that will be turned into a JSON object and represent this
|
||||||
|
# object.
|
||||||
def as_json(*)
|
def as_json(*)
|
||||||
{
|
{
|
||||||
JSON.create_id => self.class.name,
|
JSON.create_id => self.class.name,
|
||||||
@ -16,7 +21,8 @@ class Complex
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Stores class name (Complex) along with real value <tt>r</tt> and imaginary value <tt>i</tt> as JSON string
|
||||||
def to_json(*)
|
def to_json(*)
|
||||||
as_json.to_json
|
as_json.to_json
|
||||||
end
|
end
|
||||||
end
|
end
|
@ -4,10 +4,14 @@ end
|
|||||||
defined?(::Rational) or require 'rational'
|
defined?(::Rational) or require 'rational'
|
||||||
|
|
||||||
class 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)
|
def self.json_create(object)
|
||||||
Rational(object['n'], object['d'])
|
Rational(object['n'], object['d'])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Returns a hash, that will be turned into a JSON object and represent this
|
||||||
|
# object.
|
||||||
def as_json(*)
|
def as_json(*)
|
||||||
{
|
{
|
||||||
JSON.create_id => self.class.name,
|
JSON.create_id => self.class.name,
|
||||||
@ -16,6 +20,7 @@ class Rational
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Stores class name (Rational) along with numerator value <tt>n</tt> and denominator value <tt>d</tt> as JSON string
|
||||||
def to_json(*)
|
def to_json(*)
|
||||||
as_json.to_json
|
as_json.to_json
|
||||||
end
|
end
|
||||||
|
@ -10,7 +10,7 @@ class Time
|
|||||||
if usec = object.delete('u') # used to be tv_usec -> tv_nsec
|
if usec = object.delete('u') # used to be tv_usec -> tv_nsec
|
||||||
object['n'] = usec * 1000
|
object['n'] = usec * 1000
|
||||||
end
|
end
|
||||||
if instance_methods.include?(:tv_nsec)
|
if method_defined?(:tv_nsec)
|
||||||
at(object['s'], Rational(object['n'], 1000))
|
at(object['s'], Rational(object['n'], 1000))
|
||||||
else
|
else
|
||||||
at(object['s'], object['n'] / 1000)
|
at(object['s'], object['n'] / 1000)
|
||||||
|
@ -148,7 +148,7 @@ module JSON
|
|||||||
# the default.
|
# the default.
|
||||||
# * *create_additions*: If set to false, the Parser doesn't create
|
# * *create_additions*: If set to false, the Parser doesn't create
|
||||||
# additions even if a matching class and create_id was found. This option
|
# additions even if a matching class and create_id was found. This option
|
||||||
# defaults to true.
|
# defaults to false.
|
||||||
# * *object_class*: Defaults to Hash
|
# * *object_class*: Defaults to Hash
|
||||||
# * *array_class*: Defaults to Array
|
# * *array_class*: Defaults to Array
|
||||||
def parse(source, opts = {})
|
def parse(source, opts = {})
|
||||||
@ -169,7 +169,7 @@ module JSON
|
|||||||
# to true.
|
# to true.
|
||||||
# * *create_additions*: If set to false, the Parser doesn't create
|
# * *create_additions*: If set to false, the Parser doesn't create
|
||||||
# additions even if a matching class and create_id was found. This option
|
# additions even if a matching class and create_id was found. This option
|
||||||
# defaults to true.
|
# defaults to false.
|
||||||
def parse!(source, opts = {})
|
def parse!(source, opts = {})
|
||||||
opts = {
|
opts = {
|
||||||
:max_nesting => false,
|
:max_nesting => false,
|
||||||
@ -390,7 +390,7 @@ module JSON
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
opts = JSON.dump_default_options
|
opts = JSON.dump_default_options
|
||||||
limit and opts.update(:max_nesting => limit)
|
opts = opts.merge(:max_nesting => limit) if limit
|
||||||
result = generate(obj, opts)
|
result = generate(obj, opts)
|
||||||
if anIO
|
if anIO
|
||||||
anIO.write result
|
anIO.write result
|
||||||
@ -411,7 +411,7 @@ module JSON
|
|||||||
string
|
string
|
||||||
end
|
end
|
||||||
|
|
||||||
# Shortuct for iconv.
|
# Shortcut for iconv.
|
||||||
if ::String.method_defined?(:encode)
|
if ::String.method_defined?(:encode)
|
||||||
# Encodes string using Ruby's _String.encode_
|
# Encodes string using Ruby's _String.encode_
|
||||||
def self.iconv(to, from, string)
|
def self.iconv(to, from, string)
|
||||||
|
@ -1626,8 +1626,8 @@ static VALUE convert_encoding(VALUE source)
|
|||||||
* (keys) in a JSON object. Otherwise strings are returned, which is also
|
* (keys) in a JSON object. Otherwise strings are returned, which is also
|
||||||
* the default.
|
* the default.
|
||||||
* * *create_additions*: If set to false, the Parser doesn't create
|
* * *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.
|
* defaults to false.
|
||||||
* * *object_class*: Defaults to Hash
|
* * *object_class*: Defaults to Hash
|
||||||
* * *array_class*: Defaults to Array
|
* * *array_class*: Defaults to Array
|
||||||
*/
|
*/
|
||||||
|
@ -610,7 +610,7 @@ static VALUE convert_encoding(VALUE source)
|
|||||||
* (keys) in a JSON object. Otherwise strings are returned, which is also
|
* (keys) in a JSON object. Otherwise strings are returned, which is also
|
||||||
* the default.
|
* the default.
|
||||||
* * *create_additions*: If set to false, the Parser doesn't create
|
* * *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.
|
* defaults to true.
|
||||||
* * *object_class*: Defaults to Hash
|
* * *object_class*: Defaults to Hash
|
||||||
* * *array_class*: Defaults to Array
|
* * *array_class*: Defaults to Array
|
||||||
|
@ -517,6 +517,12 @@ EOT
|
|||||||
assert_equal too_deep, output.string
|
assert_equal too_deep, output.string
|
||||||
end
|
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
|
def test_big_integers
|
||||||
json1 = JSON([orig = (1 << 31) - 1])
|
json1 = JSON([orig = (1 << 31) - 1])
|
||||||
assert_equal orig, JSON[json1][0]
|
assert_equal orig, JSON[json1][0]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user