json 1.8.3 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of json might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.travis.yml +4 -10
- data/CHANGES +12 -0
- data/Gemfile +1 -2
- data/{README.rdoc → README.md} +145 -111
- data/Rakefile +26 -29
- data/VERSION +1 -1
- data/ext/json/ext/generator/generator.c +38 -55
- data/ext/json/ext/generator/generator.h +7 -1
- data/ext/json/ext/parser/extconf.rb +3 -0
- data/ext/json/ext/parser/parser.c +309 -439
- data/ext/json/ext/parser/parser.h +0 -1
- data/ext/json/ext/parser/parser.rl +67 -160
- data/ext/json/extconf.rb +0 -1
- data/java/src/json/ext/ByteListTranscoder.java +1 -2
- data/java/src/json/ext/Generator.java +11 -12
- data/java/src/json/ext/GeneratorMethods.java +1 -2
- data/java/src/json/ext/GeneratorService.java +1 -2
- data/java/src/json/ext/GeneratorState.java +3 -56
- data/java/src/json/ext/OptionsReader.java +2 -3
- data/java/src/json/ext/Parser.java +110 -411
- data/java/src/json/ext/Parser.rl +25 -119
- data/java/src/json/ext/ParserService.java +1 -2
- data/java/src/json/ext/RuntimeInfo.java +1 -6
- data/java/src/json/ext/StringDecoder.java +1 -2
- data/java/src/json/ext/StringEncoder.java +5 -0
- data/java/src/json/ext/Utils.java +1 -2
- data/json-java.gemspec +15 -0
- data/json.gemspec +0 -0
- data/json_pure.gemspec +23 -26
- data/lib/json/add/bigdecimal.rb +1 -0
- data/lib/json/add/complex.rb +2 -1
- data/lib/json/add/core.rb +1 -0
- data/lib/json/add/date.rb +1 -1
- data/lib/json/add/date_time.rb +1 -1
- data/lib/json/add/exception.rb +1 -1
- data/lib/json/add/ostruct.rb +1 -1
- data/lib/json/add/range.rb +1 -1
- data/lib/json/add/rational.rb +1 -0
- data/lib/json/add/regexp.rb +1 -1
- data/lib/json/add/struct.rb +1 -1
- data/lib/json/add/symbol.rb +1 -1
- data/lib/json/add/time.rb +1 -1
- data/lib/json/common.rb +24 -52
- data/lib/json/ext.rb +0 -6
- data/lib/json/generic_object.rb +5 -4
- data/lib/json/pure/generator.rb +61 -125
- data/lib/json/pure/parser.rb +28 -80
- data/lib/json/pure.rb +2 -8
- data/lib/json/version.rb +2 -1
- data/lib/json.rb +1 -0
- data/references/rfc7159.txt +899 -0
- data/tests/fixtures/obsolete_fail1.json +1 -0
- data/tests/{test_json_addition.rb → json_addition_test.rb} +22 -25
- data/tests/json_common_interface_test.rb +126 -0
- data/tests/json_encoding_test.rb +105 -0
- data/tests/json_ext_parser_test.rb +15 -0
- data/tests/{test_json_fixtures.rb → json_fixtures_test.rb} +5 -8
- data/tests/{test_json_generate.rb → json_generator_test.rb} +76 -37
- data/tests/{test_json_generic_object.rb → json_generic_object_test.rb} +15 -8
- data/tests/json_parser_test.rb +448 -0
- data/tests/json_string_matching_test.rb +38 -0
- data/tests/test_helper.rb +23 -0
- data/tools/diff.sh +18 -0
- data/tools/fuzz.rb +1 -9
- metadata +27 -42
- data/COPYING +0 -58
- data/COPYING-json-jruby +0 -57
- data/GPL +0 -340
- data/TODO +0 -1
- data/tests/fixtures/fail1.json +0 -1
- data/tests/setup_variant.rb +0 -11
- data/tests/test_json.rb +0 -553
- data/tests/test_json_encoding.rb +0 -65
- data/tests/test_json_string_matching.rb +0 -39
- data/tests/test_json_unicode.rb +0 -72
data/java/src/json/ext/Parser.rl
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
/*
|
2
2
|
* This code is copyrighted work by Daniel Luz <dev at mernen dot com>.
|
3
3
|
*
|
4
|
-
* Distributed under the Ruby
|
5
|
-
* for details.
|
4
|
+
* Distributed under the Ruby license: https://www.ruby-lang.org/en/about/license.txt
|
6
5
|
*/
|
7
6
|
package json.ext;
|
8
7
|
|
@@ -51,10 +50,9 @@ public class Parser extends RubyObject {
|
|
51
50
|
private int maxNesting;
|
52
51
|
private boolean allowNaN;
|
53
52
|
private boolean symbolizeNames;
|
54
|
-
private boolean quirksMode;
|
55
53
|
private RubyClass objectClass;
|
56
54
|
private RubyClass arrayClass;
|
57
|
-
private RubyHash
|
55
|
+
private RubyHash matchString;
|
58
56
|
|
59
57
|
private static final int DEFAULT_MAX_NESTING = 100;
|
60
58
|
|
@@ -122,10 +120,6 @@ public class Parser extends RubyObject {
|
|
122
120
|
* <dd>If set to <code>true</code>, returns symbols for the names (keys) in
|
123
121
|
* a JSON object. Otherwise strings are returned, which is also the default.
|
124
122
|
*
|
125
|
-
* <dt><code>:quirks_mode?</code>
|
126
|
-
* <dd>If set to <code>true</code>, if the parse is in quirks_mode, false
|
127
|
-
* otherwise.
|
128
|
-
*
|
129
123
|
* <dt><code>:create_additions</code>
|
130
124
|
* <dd>If set to <code>false</code>, the Parser doesn't create additions
|
131
125
|
* even if a matching class and <code>create_id</code> was found. This option
|
@@ -137,9 +131,6 @@ public class Parser extends RubyObject {
|
|
137
131
|
* <dt><code>:array_class</code>
|
138
132
|
* <dd>Defaults to Array.
|
139
133
|
*
|
140
|
-
* <dt><code>:quirks_mode</code>
|
141
|
-
* <dd>Enables quirks_mode for parser, that is for example parsing single
|
142
|
-
* JSON values instead of documents is possible.
|
143
134
|
* </dl>
|
144
135
|
*/
|
145
136
|
@JRubyMethod(name = "new", required = 1, optional = 1, meta = true)
|
@@ -162,15 +153,20 @@ public class Parser extends RubyObject {
|
|
162
153
|
this.maxNesting = opts.getInt("max_nesting", DEFAULT_MAX_NESTING);
|
163
154
|
this.allowNaN = opts.getBool("allow_nan", false);
|
164
155
|
this.symbolizeNames = opts.getBool("symbolize_names", false);
|
165
|
-
this.quirksMode = opts.getBool("quirks_mode", false);
|
166
156
|
this.createId = opts.getString("create_id", getCreateId(context));
|
167
157
|
this.createAdditions = opts.getBool("create_additions", false);
|
168
158
|
this.objectClass = opts.getClass("object_class", runtime.getHash());
|
169
159
|
this.arrayClass = opts.getClass("array_class", runtime.getArray());
|
170
|
-
this.
|
160
|
+
this.matchString = opts.getHash("match_string");
|
171
161
|
|
162
|
+
if(symbolizeNames && createAdditions) {
|
163
|
+
throw runtime.newArgumentError(
|
164
|
+
"options :symbolize_names and :create_additions cannot be " +
|
165
|
+
" used in conjunction"
|
166
|
+
);
|
167
|
+
}
|
172
168
|
this.vSource = args[0].convertToString();
|
173
|
-
|
169
|
+
this.vSource = convertEncoding(context, vSource);
|
174
170
|
|
175
171
|
return this;
|
176
172
|
}
|
@@ -181,33 +177,13 @@ public class Parser extends RubyObject {
|
|
181
177
|
* Returns the source string if no conversion is needed.
|
182
178
|
*/
|
183
179
|
private RubyString convertEncoding(ThreadContext context, RubyString source) {
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
if (info.encodingsSupported()) {
|
192
|
-
RubyEncoding encoding = (RubyEncoding)source.encoding(context);
|
193
|
-
if (encoding != info.ascii8bit.get()) {
|
194
|
-
return (RubyString)source.encode(context, info.utf8.get());
|
195
|
-
}
|
196
|
-
|
197
|
-
String sniffedEncoding = sniffByteList(bl);
|
198
|
-
if (sniffedEncoding == null) return source; // assume UTF-8
|
199
|
-
return reinterpretEncoding(context, source, sniffedEncoding);
|
200
|
-
}
|
201
|
-
|
202
|
-
String sniffedEncoding = sniffByteList(bl);
|
203
|
-
if (sniffedEncoding == null) return source; // assume UTF-8
|
204
|
-
Ruby runtime = context.getRuntime();
|
205
|
-
return (RubyString)info.jsonModule.get().
|
206
|
-
callMethod(context, "iconv",
|
207
|
-
new IRubyObject[] {
|
208
|
-
runtime.newString("utf-8"),
|
209
|
-
runtime.newString(sniffedEncoding),
|
210
|
-
source});
|
180
|
+
RubyEncoding encoding = (RubyEncoding)source.encoding(context);
|
181
|
+
if (encoding == info.ascii8bit.get()) {
|
182
|
+
source.force_encoding(context, info.utf8.get());
|
183
|
+
} else {
|
184
|
+
source = (RubyString) source.encode(context, info.utf8.get());
|
185
|
+
}
|
186
|
+
return source;
|
211
187
|
}
|
212
188
|
|
213
189
|
/**
|
@@ -260,17 +236,6 @@ public class Parser extends RubyObject {
|
|
260
236
|
return checkAndGetSource().dup();
|
261
237
|
}
|
262
238
|
|
263
|
-
/**
|
264
|
-
* <code>Parser#quirks_mode?()</code>
|
265
|
-
*
|
266
|
-
* <p>If set to <code>true</code>, if the parse is in quirks_mode, false
|
267
|
-
* otherwise.
|
268
|
-
*/
|
269
|
-
@JRubyMethod(name = "quirks_mode?")
|
270
|
-
public IRubyObject quirks_mode_p(ThreadContext context) {
|
271
|
-
return context.getRuntime().newBoolean(quirksMode);
|
272
|
-
}
|
273
|
-
|
274
239
|
public RubyString checkAndGetSource() {
|
275
240
|
if (vSource != null) {
|
276
241
|
return vSource;
|
@@ -394,7 +359,7 @@ public class Parser extends RubyObject {
|
|
394
359
|
}
|
395
360
|
}
|
396
361
|
action parse_number {
|
397
|
-
if (pe > fpc +
|
362
|
+
if (pe > fpc + 8 &&
|
398
363
|
absSubSequence(fpc, fpc + 9).equals(JSON_MINUS_INFINITY)) {
|
399
364
|
|
400
365
|
if (parser.allowNaN) {
|
@@ -624,11 +589,11 @@ public class Parser extends RubyObject {
|
|
624
589
|
%% write exec;
|
625
590
|
|
626
591
|
if (parser.createAdditions) {
|
627
|
-
RubyHash
|
628
|
-
if (
|
592
|
+
RubyHash matchString = parser.matchString;
|
593
|
+
if (matchString != null) {
|
629
594
|
final IRubyObject[] memoArray = { result, null };
|
630
595
|
try {
|
631
|
-
|
596
|
+
matchString.visitAll(new RubyHash.Visitor() {
|
632
597
|
@Override
|
633
598
|
public void visit(IRubyObject pattern, IRubyObject klass) {
|
634
599
|
if (pattern.callMethod(context, "===", memoArray[0]).isTrue()) {
|
@@ -649,7 +614,7 @@ public class Parser extends RubyObject {
|
|
649
614
|
}
|
650
615
|
|
651
616
|
if (cs >= JSON_string_first_final && result != null) {
|
652
|
-
if (
|
617
|
+
if (result instanceof RubyString) {
|
653
618
|
((RubyString)result).force_encoding(context, info.utf8.get());
|
654
619
|
}
|
655
620
|
res.update(result, p + 1);
|
@@ -836,60 +801,6 @@ public class Parser extends RubyObject {
|
|
836
801
|
|
837
802
|
write data;
|
838
803
|
|
839
|
-
action parse_object {
|
840
|
-
currentNesting = 1;
|
841
|
-
parseObject(res, fpc, pe);
|
842
|
-
if (res.result == null) {
|
843
|
-
fhold;
|
844
|
-
fbreak;
|
845
|
-
} else {
|
846
|
-
result = res.result;
|
847
|
-
fexec res.p;
|
848
|
-
}
|
849
|
-
}
|
850
|
-
|
851
|
-
action parse_array {
|
852
|
-
currentNesting = 1;
|
853
|
-
parseArray(res, fpc, pe);
|
854
|
-
if (res.result == null) {
|
855
|
-
fhold;
|
856
|
-
fbreak;
|
857
|
-
} else {
|
858
|
-
result = res.result;
|
859
|
-
fexec res.p;
|
860
|
-
}
|
861
|
-
}
|
862
|
-
|
863
|
-
main := ignore*
|
864
|
-
( begin_object >parse_object
|
865
|
-
| begin_array >parse_array )
|
866
|
-
ignore*;
|
867
|
-
}%%
|
868
|
-
|
869
|
-
public IRubyObject parseStrict() {
|
870
|
-
int cs = EVIL;
|
871
|
-
int p, pe;
|
872
|
-
IRubyObject result = null;
|
873
|
-
ParserResult res = new ParserResult();
|
874
|
-
|
875
|
-
%% write init;
|
876
|
-
p = byteList.begin();
|
877
|
-
pe = p + byteList.length();
|
878
|
-
%% write exec;
|
879
|
-
|
880
|
-
if (cs >= JSON_first_final && p == pe) {
|
881
|
-
return result;
|
882
|
-
} else {
|
883
|
-
throw unexpectedToken(p, pe);
|
884
|
-
}
|
885
|
-
}
|
886
|
-
|
887
|
-
%%{
|
888
|
-
machine JSON_quirks_mode;
|
889
|
-
include JSON_common;
|
890
|
-
|
891
|
-
write data;
|
892
|
-
|
893
804
|
action parse_value {
|
894
805
|
parseValue(res, fpc, pe);
|
895
806
|
if (res.result == null) {
|
@@ -906,7 +817,7 @@ public class Parser extends RubyObject {
|
|
906
817
|
ignore*;
|
907
818
|
}%%
|
908
819
|
|
909
|
-
public IRubyObject
|
820
|
+
public IRubyObject parseImplemetation() {
|
910
821
|
int cs = EVIL;
|
911
822
|
int p, pe;
|
912
823
|
IRubyObject result = null;
|
@@ -917,7 +828,7 @@ public class Parser extends RubyObject {
|
|
917
828
|
pe = p + byteList.length();
|
918
829
|
%% write exec;
|
919
830
|
|
920
|
-
if (cs >=
|
831
|
+
if (cs >= JSON_first_final && p == pe) {
|
921
832
|
return result;
|
922
833
|
} else {
|
923
834
|
throw unexpectedToken(p, pe);
|
@@ -925,12 +836,7 @@ public class Parser extends RubyObject {
|
|
925
836
|
}
|
926
837
|
|
927
838
|
public IRubyObject parse() {
|
928
|
-
|
929
|
-
return parseQuirksMode();
|
930
|
-
} else {
|
931
|
-
return parseStrict();
|
932
|
-
}
|
933
|
-
|
839
|
+
return parseImplemetation();
|
934
840
|
}
|
935
841
|
|
936
842
|
/**
|
@@ -1,8 +1,7 @@
|
|
1
1
|
/*
|
2
2
|
* This code is copyrighted work by Daniel Luz <dev at mernen dot com>.
|
3
3
|
*
|
4
|
-
* Distributed under the Ruby
|
5
|
-
* for details.
|
4
|
+
* Distributed under the Ruby license: https://www.ruby-lang.org/en/about/license.txt
|
6
5
|
*/
|
7
6
|
package json.ext;
|
8
7
|
|
@@ -1,8 +1,7 @@
|
|
1
1
|
/*
|
2
2
|
* This code is copyrighted work by Daniel Luz <dev at mernen dot com>.
|
3
3
|
*
|
4
|
-
* Distributed under the Ruby
|
5
|
-
* for details.
|
4
|
+
* Distributed under the Ruby license: https://www.ruby-lang.org/en/about/license.txt
|
6
5
|
*/
|
7
6
|
package json.ext;
|
8
7
|
|
@@ -91,10 +90,6 @@ final class RuntimeInfo {
|
|
91
90
|
}
|
92
91
|
}
|
93
92
|
|
94
|
-
public boolean encodingsSupported() {
|
95
|
-
return utf8 != null && utf8.get() != null;
|
96
|
-
}
|
97
|
-
|
98
93
|
public RubyEncoding getEncoding(ThreadContext context, String name) {
|
99
94
|
synchronized (encodings) {
|
100
95
|
WeakReference<RubyEncoding> encoding = encodings.get(name);
|
@@ -1,8 +1,7 @@
|
|
1
1
|
/*
|
2
2
|
* This code is copyrighted work by Daniel Luz <dev at mernen dot com>.
|
3
3
|
*
|
4
|
-
* Distributed under the Ruby
|
5
|
-
* for details.
|
4
|
+
* Distributed under the Ruby license: https://www.ruby-lang.org/en/about/license.txt
|
6
5
|
*/
|
7
6
|
package json.ext;
|
8
7
|
|
@@ -1,8 +1,7 @@
|
|
1
1
|
/*
|
2
2
|
* This code is copyrighted work by Daniel Luz <dev at mernen dot com>.
|
3
3
|
*
|
4
|
-
* Distributed under the Ruby
|
5
|
-
* for details.
|
4
|
+
* Distributed under the Ruby license: https://www.ruby-lang.org/en/about/license.txt
|
6
5
|
*/
|
7
6
|
package json.ext;
|
8
7
|
|
data/json-java.gemspec
CHANGED
@@ -14,6 +14,21 @@ spec = Gem::Specification.new do |s|
|
|
14
14
|
s.licenses = ["Ruby"]
|
15
15
|
|
16
16
|
s.files = Dir["{docs,lib,tests}/**/*"]
|
17
|
+
|
18
|
+
if s.respond_to? :specification_version then
|
19
|
+
s.specification_version = 4
|
20
|
+
|
21
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
22
|
+
s.add_development_dependency(%q<rake>, [">= 0"])
|
23
|
+
s.add_development_dependency(%q<test-unit>, ["~> 2.0"])
|
24
|
+
else
|
25
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
26
|
+
s.add_dependency(%q<test-unit>, ["~> 2.0"])
|
27
|
+
end
|
28
|
+
else
|
29
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
30
|
+
s.add_dependency(%q<test-unit>, ["~> 2.0"])
|
31
|
+
end
|
17
32
|
end
|
18
33
|
|
19
34
|
if $0 == __FILE__
|
data/json.gemspec
CHANGED
Binary file
|
data/json_pure.gemspec
CHANGED
@@ -1,40 +1,37 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: json_pure
|
2
|
+
# stub: json_pure 2.0.0 ruby lib
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
|
-
s.name = "json_pure"
|
6
|
-
s.version = "
|
5
|
+
s.name = "json_pure".freeze
|
6
|
+
s.version = "2.0.0"
|
7
7
|
|
8
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
9
|
-
s.require_paths = ["lib"]
|
10
|
-
s.authors = ["Florian Frank"]
|
11
|
-
s.date = "
|
12
|
-
s.description = "This is a JSON implementation in pure Ruby."
|
13
|
-
s.email = "flori@ping.de"
|
14
|
-
s.extra_rdoc_files = ["README.
|
15
|
-
s.files = ["./tests/
|
16
|
-
s.homepage = "http://flori.github.com/json"
|
17
|
-
s.licenses = ["Ruby"]
|
18
|
-
s.rdoc_options = ["--title", "JSON implemention for ruby", "--main", "README.
|
19
|
-
s.rubygems_version = "2.4.
|
20
|
-
s.summary = "JSON Implementation for Ruby"
|
21
|
-
s.test_files = ["./tests/
|
8
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
9
|
+
s.require_paths = ["lib".freeze]
|
10
|
+
s.authors = ["Florian Frank".freeze]
|
11
|
+
s.date = "2016-07-01"
|
12
|
+
s.description = "This is a JSON implementation in pure Ruby.".freeze
|
13
|
+
s.email = "flori@ping.de".freeze
|
14
|
+
s.extra_rdoc_files = ["README.md".freeze]
|
15
|
+
s.files = ["./tests/test_helper.rb".freeze, ".gitignore".freeze, ".travis.yml".freeze, "CHANGES".freeze, "Gemfile".freeze, "README-json-jruby.markdown".freeze, "README.md".freeze, "Rakefile".freeze, "VERSION".freeze, "data/example.json".freeze, "data/index.html".freeze, "data/prototype.js".freeze, "diagrams/.keep".freeze, "ext/json/ext/fbuffer/fbuffer.h".freeze, "ext/json/ext/generator/depend".freeze, "ext/json/ext/generator/extconf.rb".freeze, "ext/json/ext/generator/generator.c".freeze, "ext/json/ext/generator/generator.h".freeze, "ext/json/ext/parser/depend".freeze, "ext/json/ext/parser/extconf.rb".freeze, "ext/json/ext/parser/parser.c".freeze, "ext/json/ext/parser/parser.h".freeze, "ext/json/ext/parser/parser.rl".freeze, "ext/json/extconf.rb".freeze, "install.rb".freeze, "java/src/json/ext/ByteListTranscoder.java".freeze, "java/src/json/ext/Generator.java".freeze, "java/src/json/ext/GeneratorMethods.java".freeze, "java/src/json/ext/GeneratorService.java".freeze, "java/src/json/ext/GeneratorState.java".freeze, "java/src/json/ext/OptionsReader.java".freeze, "java/src/json/ext/Parser.java".freeze, "java/src/json/ext/Parser.rl".freeze, "java/src/json/ext/ParserService.java".freeze, "java/src/json/ext/RuntimeInfo.java".freeze, "java/src/json/ext/StringDecoder.java".freeze, "java/src/json/ext/StringEncoder.java".freeze, "java/src/json/ext/Utils.java".freeze, "json-java.gemspec".freeze, "json.gemspec".freeze, "json_pure.gemspec".freeze, "lib/json.rb".freeze, "lib/json/add/bigdecimal.rb".freeze, "lib/json/add/complex.rb".freeze, "lib/json/add/core.rb".freeze, "lib/json/add/date.rb".freeze, "lib/json/add/date_time.rb".freeze, "lib/json/add/exception.rb".freeze, "lib/json/add/ostruct.rb".freeze, "lib/json/add/range.rb".freeze, "lib/json/add/rational.rb".freeze, "lib/json/add/regexp.rb".freeze, "lib/json/add/struct.rb".freeze, "lib/json/add/symbol.rb".freeze, "lib/json/add/time.rb".freeze, "lib/json/common.rb".freeze, "lib/json/ext.rb".freeze, "lib/json/ext/.keep".freeze, "lib/json/generic_object.rb".freeze, "lib/json/pure.rb".freeze, "lib/json/pure/generator.rb".freeze, "lib/json/pure/parser.rb".freeze, "lib/json/version.rb".freeze, "references/rfc7159.txt".freeze, "tests/fixtures/fail10.json".freeze, "tests/fixtures/fail11.json".freeze, "tests/fixtures/fail12.json".freeze, "tests/fixtures/fail13.json".freeze, "tests/fixtures/fail14.json".freeze, "tests/fixtures/fail18.json".freeze, "tests/fixtures/fail19.json".freeze, "tests/fixtures/fail2.json".freeze, "tests/fixtures/fail20.json".freeze, "tests/fixtures/fail21.json".freeze, "tests/fixtures/fail22.json".freeze, "tests/fixtures/fail23.json".freeze, "tests/fixtures/fail24.json".freeze, "tests/fixtures/fail25.json".freeze, "tests/fixtures/fail27.json".freeze, "tests/fixtures/fail28.json".freeze, "tests/fixtures/fail3.json".freeze, "tests/fixtures/fail4.json".freeze, "tests/fixtures/fail5.json".freeze, "tests/fixtures/fail6.json".freeze, "tests/fixtures/fail7.json".freeze, "tests/fixtures/fail8.json".freeze, "tests/fixtures/fail9.json".freeze, "tests/fixtures/obsolete_fail1.json".freeze, "tests/fixtures/pass1.json".freeze, "tests/fixtures/pass15.json".freeze, "tests/fixtures/pass16.json".freeze, "tests/fixtures/pass17.json".freeze, "tests/fixtures/pass2.json".freeze, "tests/fixtures/pass26.json".freeze, "tests/fixtures/pass3.json".freeze, "tests/json_addition_test.rb".freeze, "tests/json_common_interface_test.rb".freeze, "tests/json_encoding_test.rb".freeze, "tests/json_ext_parser_test.rb".freeze, "tests/json_fixtures_test.rb".freeze, "tests/json_generator_test.rb".freeze, "tests/json_generic_object_test.rb".freeze, "tests/json_parser_test.rb".freeze, "tests/json_string_matching_test.rb".freeze, "tests/test_helper.rb".freeze, "tools/diff.sh".freeze, "tools/fuzz.rb".freeze, "tools/server.rb".freeze]
|
16
|
+
s.homepage = "http://flori.github.com/json".freeze
|
17
|
+
s.licenses = ["Ruby".freeze]
|
18
|
+
s.rdoc_options = ["--title".freeze, "JSON implemention for ruby".freeze, "--main".freeze, "README.md".freeze]
|
19
|
+
s.rubygems_version = "2.6.4".freeze
|
20
|
+
s.summary = "JSON Implementation for Ruby".freeze
|
21
|
+
s.test_files = ["./tests/test_helper.rb".freeze]
|
22
22
|
|
23
23
|
if s.respond_to? :specification_version then
|
24
24
|
s.specification_version = 4
|
25
25
|
|
26
26
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
27
|
-
s.add_development_dependency(%q<
|
28
|
-
s.add_development_dependency(%q<
|
29
|
-
s.add_development_dependency(%q<rake>, ["~> 0.9.2"])
|
27
|
+
s.add_development_dependency(%q<rake>.freeze, [">= 0"])
|
28
|
+
s.add_development_dependency(%q<test-unit>.freeze, ["~> 2.0"])
|
30
29
|
else
|
31
|
-
s.add_dependency(%q<
|
32
|
-
s.add_dependency(%q<
|
33
|
-
s.add_dependency(%q<rake>, ["~> 0.9.2"])
|
30
|
+
s.add_dependency(%q<rake>.freeze, [">= 0"])
|
31
|
+
s.add_dependency(%q<test-unit>.freeze, ["~> 2.0"])
|
34
32
|
end
|
35
33
|
else
|
36
|
-
s.add_dependency(%q<
|
37
|
-
s.add_dependency(%q<
|
38
|
-
s.add_dependency(%q<rake>, ["~> 0.9.2"])
|
34
|
+
s.add_dependency(%q<rake>.freeze, [">= 0"])
|
35
|
+
s.add_dependency(%q<test-unit>.freeze, ["~> 2.0"])
|
39
36
|
end
|
40
37
|
end
|
data/lib/json/add/bigdecimal.rb
CHANGED
data/lib/json/add/complex.rb
CHANGED
data/lib/json/add/core.rb
CHANGED
data/lib/json/add/date.rb
CHANGED
data/lib/json/add/date_time.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
+
#frozen_string_literal: false
|
1
2
|
unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
|
2
3
|
require 'json'
|
3
4
|
end
|
4
5
|
require 'date'
|
5
6
|
|
6
|
-
# DateTime serialization/deserialization
|
7
7
|
class DateTime
|
8
8
|
|
9
9
|
# Deserializes JSON string by converting year <tt>y</tt>, month <tt>m</tt>,
|
data/lib/json/add/exception.rb
CHANGED
data/lib/json/add/ostruct.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
+
#frozen_string_literal: false
|
1
2
|
unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
|
2
3
|
require 'json'
|
3
4
|
end
|
4
5
|
require 'ostruct'
|
5
6
|
|
6
|
-
# OpenStruct serialization/deserialization
|
7
7
|
class OpenStruct
|
8
8
|
|
9
9
|
# Deserializes JSON string by constructing new Struct object with values
|
data/lib/json/add/range.rb
CHANGED
data/lib/json/add/rational.rb
CHANGED
data/lib/json/add/regexp.rb
CHANGED
data/lib/json/add/struct.rb
CHANGED
data/lib/json/add/symbol.rb
CHANGED
data/lib/json/add/time.rb
CHANGED