json-jruby 1.2.0-universal-java-1.6 → 1.2.2-universal-java-1.6
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/json/add/core.rb +20 -7
- data/lib/json/add/rails.rb +2 -2
- data/lib/json/common.rb +5 -0
- data/lib/json/ext/generator.jar +0 -0
- data/lib/json/ext/parser.jar +0 -0
- data/lib/json/pure/parser.rb +5 -1
- data/lib/json/version.rb +1 -1
- data/tests/test_json.rb +7 -0
- data/tests/test_json_addition.rb +4 -6
- data/tests/test_json_rails.rb +4 -6
- metadata +12 -5
data/lib/json/add/core.rb
CHANGED
@@ -7,6 +7,19 @@ unless Object.const_defined?(:JSON) and ::JSON.const_defined?(:JSON_LOADED) and
|
|
7
7
|
end
|
8
8
|
require 'date'
|
9
9
|
|
10
|
+
class Symbol
|
11
|
+
def to_json(*a)
|
12
|
+
{
|
13
|
+
JSON.create_id => self.class.name,
|
14
|
+
's' => to_s,
|
15
|
+
}.to_json(*a)
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.json_create(o)
|
19
|
+
o['s'].to_sym
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
10
23
|
class Time
|
11
24
|
def self.json_create(object)
|
12
25
|
if usec = object.delete('u') # used to be tv_usec -> tv_nsec
|
@@ -21,7 +34,7 @@ class Time
|
|
21
34
|
|
22
35
|
def to_json(*args)
|
23
36
|
{
|
24
|
-
|
37
|
+
JSON.create_id => self.class.name,
|
25
38
|
's' => tv_sec,
|
26
39
|
'n' => respond_to?(:tv_nsec) ? tv_nsec : tv_usec * 1000
|
27
40
|
}.to_json(*args)
|
@@ -37,7 +50,7 @@ class Date
|
|
37
50
|
|
38
51
|
def to_json(*args)
|
39
52
|
{
|
40
|
-
|
53
|
+
JSON.create_id => self.class.name,
|
41
54
|
'y' => year,
|
42
55
|
'm' => month,
|
43
56
|
'd' => day,
|
@@ -63,7 +76,7 @@ class DateTime
|
|
63
76
|
|
64
77
|
def to_json(*args)
|
65
78
|
{
|
66
|
-
|
79
|
+
JSON.create_id => self.class.name,
|
67
80
|
'y' => year,
|
68
81
|
'm' => month,
|
69
82
|
'd' => day,
|
@@ -83,7 +96,7 @@ class Range
|
|
83
96
|
|
84
97
|
def to_json(*args)
|
85
98
|
{
|
86
|
-
|
99
|
+
JSON.create_id => self.class.name,
|
87
100
|
'a' => [ first, last, exclude_end? ]
|
88
101
|
}.to_json(*args)
|
89
102
|
end
|
@@ -98,7 +111,7 @@ class Struct
|
|
98
111
|
klass = self.class.name
|
99
112
|
klass.to_s.empty? and raise JSON::JSONError, "Only named structs are supported!"
|
100
113
|
{
|
101
|
-
|
114
|
+
JSON.create_id => klass,
|
102
115
|
'v' => values,
|
103
116
|
}.to_json(*args)
|
104
117
|
end
|
@@ -113,7 +126,7 @@ class Exception
|
|
113
126
|
|
114
127
|
def to_json(*args)
|
115
128
|
{
|
116
|
-
|
129
|
+
JSON.create_id => self.class.name,
|
117
130
|
'm' => message,
|
118
131
|
'b' => backtrace,
|
119
132
|
}.to_json(*args)
|
@@ -127,7 +140,7 @@ class Regexp
|
|
127
140
|
|
128
141
|
def to_json(*)
|
129
142
|
{
|
130
|
-
|
143
|
+
JSON.create_id => self.class.name,
|
131
144
|
'o' => options,
|
132
145
|
's' => source,
|
133
146
|
}.to_json
|
data/lib/json/add/rails.rb
CHANGED
@@ -10,7 +10,7 @@ class Object
|
|
10
10
|
def self.json_create(object)
|
11
11
|
obj = new
|
12
12
|
for key, value in object
|
13
|
-
next if key ==
|
13
|
+
next if key == JSON.create_id
|
14
14
|
instance_variable_set "@#{key}", value
|
15
15
|
end
|
16
16
|
obj
|
@@ -18,7 +18,7 @@ class Object
|
|
18
18
|
|
19
19
|
def to_json(*a)
|
20
20
|
result = {
|
21
|
-
|
21
|
+
JSON.create_id => self.class.name
|
22
22
|
}
|
23
23
|
instance_variables.inject(result) do |r, name|
|
24
24
|
r[name[1..-1]] = instance_variable_get name
|
data/lib/json/common.rb
CHANGED
@@ -116,9 +116,14 @@ module JSON
|
|
116
116
|
# * *allow_nan*: If set to true, allow NaN, Infinity and -Infinity in
|
117
117
|
# defiance of RFC 4627 to be parsed by the Parser. This option defaults
|
118
118
|
# to false.
|
119
|
+
# * *symbolize_names*: If set to true, returns symbols for the names
|
120
|
+
# (keys) in a JSON object. Otherwise strings are returned, which is also
|
121
|
+
# the default.
|
119
122
|
# * *create_additions*: If set to false, the Parser doesn't create
|
120
123
|
# additions even if a matchin class and create_id was found. This option
|
121
124
|
# defaults to true.
|
125
|
+
# * *object_class*: Defaults to Hash
|
126
|
+
# * *array_class*: Defaults to Array
|
122
127
|
def parse(source, opts = {})
|
123
128
|
JSON.parser.new(source, opts).parse
|
124
129
|
end
|
data/lib/json/ext/generator.jar
CHANGED
Binary file
|
data/lib/json/ext/parser.jar
CHANGED
Binary file
|
data/lib/json/pure/parser.rb
CHANGED
@@ -60,6 +60,9 @@ module JSON
|
|
60
60
|
# * *allow_nan*: If set to true, allow NaN, Infinity and -Infinity in
|
61
61
|
# defiance of RFC 4627 to be parsed by the Parser. This option defaults
|
62
62
|
# to false.
|
63
|
+
# * *symbolize_names*: If set to true, returns symbols for the names
|
64
|
+
# (keys) in a JSON object. Otherwise strings are returned, which is also
|
65
|
+
# the default.
|
63
66
|
# * *create_additions*: If set to false, the Parser doesn't create
|
64
67
|
# additions even if a matchin class and create_id was found. This option
|
65
68
|
# defaults to true.
|
@@ -109,6 +112,7 @@ module JSON
|
|
109
112
|
@max_nesting = 0
|
110
113
|
end
|
111
114
|
@allow_nan = !!opts[:allow_nan]
|
115
|
+
@symbolize_names = !!opts[:symbolize_names]
|
112
116
|
ca = true
|
113
117
|
ca = opts[:create_additions] if opts.key?(:create_additions)
|
114
118
|
@create_id = ca ? JSON.create_id : nil
|
@@ -267,7 +271,7 @@ module JSON
|
|
267
271
|
end
|
268
272
|
skip(IGNORE)
|
269
273
|
unless (value = parse_value).equal? UNPARSED
|
270
|
-
result[string] = value
|
274
|
+
result[@symbolize_names ? string.to_sym : string] = value
|
271
275
|
delim = false
|
272
276
|
skip(IGNORE)
|
273
277
|
if scan(COLLECTION_DELIMITER)
|
data/lib/json/version.rb
CHANGED
data/tests/test_json.rb
CHANGED
@@ -302,6 +302,13 @@ EOT
|
|
302
302
|
assert_equal too_deep, ok
|
303
303
|
end
|
304
304
|
|
305
|
+
def test_symbolize_names
|
306
|
+
assert_equal({ "foo" => "bar", "baz" => "quux" },
|
307
|
+
JSON.parse('{"foo":"bar", "baz":"quux"}'))
|
308
|
+
assert_equal({ :foo => "bar", :baz => "quux" },
|
309
|
+
JSON.parse('{"foo":"bar", "baz":"quux"}', :symbolize_names => true))
|
310
|
+
end
|
311
|
+
|
305
312
|
def test_load_dump
|
306
313
|
too_deep = '[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]'
|
307
314
|
assert_equal too_deep, JSON.dump(eval(too_deep))
|
data/tests/test_json_addition.rb
CHANGED
@@ -95,7 +95,7 @@ class TC_JSONAddition < Test::Unit::TestCase
|
|
95
95
|
c = C.new
|
96
96
|
assert !C.json_creatable?
|
97
97
|
json = generate(c)
|
98
|
-
assert_raises(ArgumentError) { JSON.parse(json) }
|
98
|
+
assert_raises(ArgumentError, NameError) { JSON.parse(json) }
|
99
99
|
end
|
100
100
|
|
101
101
|
def test_raw_strings
|
@@ -110,11 +110,9 @@ class TC_JSONAddition < Test::Unit::TestCase
|
|
110
110
|
json_raw_object = raw.to_json_raw_object
|
111
111
|
hash = { 'json_class' => 'String', 'raw'=> raw_array }
|
112
112
|
assert_equal hash, json_raw_object
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
# "
|
117
|
-
assert_equal json_raw, json
|
113
|
+
assert_match /\A\{.*\}\Z/, json
|
114
|
+
assert_match /"json_class":"String"/, json
|
115
|
+
assert_match /"raw":\[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255\]/, json
|
118
116
|
raw_again = JSON.parse(json)
|
119
117
|
assert_equal raw, raw_again
|
120
118
|
end
|
data/tests/test_json_rails.rb
CHANGED
@@ -116,7 +116,7 @@ class TC_JSONRails < Test::Unit::TestCase
|
|
116
116
|
c = C.new # with rails addition all objects are theoretically creatable
|
117
117
|
assert C.json_creatable?
|
118
118
|
json = generate(c)
|
119
|
-
assert_raises(ArgumentError) { JSON.parse(json) }
|
119
|
+
assert_raises(ArgumentError, NameError) { JSON.parse(json) }
|
120
120
|
end
|
121
121
|
|
122
122
|
def test_raw_strings
|
@@ -131,11 +131,9 @@ class TC_JSONRails < Test::Unit::TestCase
|
|
131
131
|
json_raw_object = raw.to_json_raw_object
|
132
132
|
hash = { 'json_class' => 'String', 'raw'=> raw_array }
|
133
133
|
assert_equal hash, json_raw_object
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
# "
|
138
|
-
assert_equal json_raw, json
|
134
|
+
assert_match /\A\{.*\}\Z/, json
|
135
|
+
assert_match /"json_class":"String"/, json
|
136
|
+
assert_match /"raw":\[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255\]/, json
|
139
137
|
raw_again = JSON.parse(json)
|
140
138
|
assert_equal raw, raw_again
|
141
139
|
end
|
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: json-jruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 1
|
7
|
+
- 2
|
8
|
+
- 2
|
9
|
+
version: 1.2.2
|
5
10
|
platform: universal-java-1.6
|
6
11
|
authors:
|
7
12
|
- Daniel Luz
|
@@ -9,7 +14,7 @@ autorequire:
|
|
9
14
|
bindir: bin
|
10
15
|
cert_chain: []
|
11
16
|
|
12
|
-
date:
|
17
|
+
date: 2010-02-28 00:00:00 -03:00
|
13
18
|
default_executable:
|
14
19
|
dependencies: []
|
15
20
|
|
@@ -85,18 +90,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
85
90
|
requirements:
|
86
91
|
- - ">="
|
87
92
|
- !ruby/object:Gem::Version
|
93
|
+
segments:
|
94
|
+
- 0
|
88
95
|
version: "0"
|
89
|
-
version:
|
90
96
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
91
97
|
requirements:
|
92
98
|
- - ">="
|
93
99
|
- !ruby/object:Gem::Version
|
100
|
+
segments:
|
101
|
+
- 0
|
94
102
|
version: "0"
|
95
|
-
version:
|
96
103
|
requirements: []
|
97
104
|
|
98
105
|
rubyforge_project: json-jruby
|
99
|
-
rubygems_version: 1.3.
|
106
|
+
rubygems_version: 1.3.6
|
100
107
|
signing_key:
|
101
108
|
specification_version: 3
|
102
109
|
summary: A JSON implementation as a JRuby extension
|