json 1.8.6 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +1 -0
  3. data/.travis.yml +11 -5
  4. data/{CHANGES → CHANGES.md} +179 -95
  5. data/Gemfile +10 -3
  6. data/LICENSE +56 -0
  7. data/{README-json-jruby.markdown → README-json-jruby.md} +0 -0
  8. data/README.md +171 -107
  9. data/Rakefile +33 -22
  10. data/VERSION +1 -1
  11. data/ext/json/ext/fbuffer/fbuffer.h +0 -3
  12. data/ext/json/ext/generator/generator.c +105 -98
  13. data/ext/json/ext/generator/generator.h +0 -6
  14. data/ext/json/ext/parser/extconf.rb +3 -0
  15. data/ext/json/ext/parser/parser.c +376 -480
  16. data/ext/json/ext/parser/parser.h +4 -5
  17. data/ext/json/ext/parser/parser.rl +108 -175
  18. data/ext/json/extconf.rb +0 -1
  19. data/java/src/json/ext/Generator.java +35 -15
  20. data/java/src/json/ext/GeneratorState.java +2 -54
  21. data/java/src/json/ext/OptionsReader.java +1 -1
  22. data/java/src/json/ext/Parser.java +131 -413
  23. data/java/src/json/ext/Parser.rl +47 -122
  24. data/java/src/json/ext/RuntimeInfo.java +0 -4
  25. data/json-java.gemspec +1 -2
  26. data/json.gemspec +0 -0
  27. data/json_pure.gemspec +8 -7
  28. data/lib/json.rb +1 -0
  29. data/lib/json/add/bigdecimal.rb +3 -2
  30. data/lib/json/add/complex.rb +4 -3
  31. data/lib/json/add/core.rb +1 -0
  32. data/lib/json/add/date.rb +1 -1
  33. data/lib/json/add/date_time.rb +1 -1
  34. data/lib/json/add/exception.rb +1 -1
  35. data/lib/json/add/ostruct.rb +3 -3
  36. data/lib/json/add/range.rb +1 -1
  37. data/lib/json/add/rational.rb +3 -2
  38. data/lib/json/add/regexp.rb +3 -3
  39. data/lib/json/add/set.rb +29 -0
  40. data/lib/json/add/struct.rb +1 -1
  41. data/lib/json/add/symbol.rb +1 -1
  42. data/lib/json/add/time.rb +1 -1
  43. data/lib/json/common.rb +26 -54
  44. data/lib/json/ext.rb +0 -6
  45. data/lib/json/generic_object.rb +5 -4
  46. data/lib/json/pure.rb +2 -8
  47. data/lib/json/pure/generator.rb +53 -124
  48. data/lib/json/pure/parser.rb +41 -81
  49. data/lib/json/version.rb +2 -1
  50. data/references/rfc7159.txt +899 -0
  51. data/tests/fixtures/obsolete_fail1.json +1 -0
  52. data/tests/{test_json_addition.rb → json_addition_test.rb} +32 -25
  53. data/tests/json_common_interface_test.rb +126 -0
  54. data/tests/json_encoding_test.rb +107 -0
  55. data/tests/json_ext_parser_test.rb +15 -0
  56. data/tests/{test_json_fixtures.rb → json_fixtures_test.rb} +5 -8
  57. data/tests/{test_json_generate.rb → json_generator_test.rb} +112 -39
  58. data/tests/{test_json_generic_object.rb → json_generic_object_test.rb} +15 -8
  59. data/tests/json_parser_test.rb +472 -0
  60. data/tests/json_string_matching_test.rb +38 -0
  61. data/tests/{setup_variant.rb → test_helper.rb} +6 -0
  62. data/tools/fuzz.rb +1 -9
  63. metadata +22 -37
  64. data/TODO +0 -1
  65. data/data/example.json +0 -1
  66. data/data/index.html +0 -38
  67. data/data/prototype.js +0 -4184
  68. data/tests/fixtures/fail1.json +0 -1
  69. data/tests/test_json.rb +0 -519
  70. data/tests/test_json_encoding.rb +0 -65
  71. data/tests/test_json_string_matching.rb +0 -39
  72. data/tests/test_json_unicode.rb +0 -72
@@ -50,9 +50,9 @@ public class Parser extends RubyObject {
50
50
  private int maxNesting;
51
51
  private boolean allowNaN;
52
52
  private boolean symbolizeNames;
53
- private boolean quirksMode;
54
53
  private RubyClass objectClass;
55
54
  private RubyClass arrayClass;
55
+ private RubyClass decimalClass;
56
56
  private RubyHash match_string;
57
57
 
58
58
  private static final int DEFAULT_MAX_NESTING = 100;
@@ -121,10 +121,6 @@ public class Parser extends RubyObject {
121
121
  * <dd>If set to <code>true</code>, returns symbols for the names (keys) in
122
122
  * a JSON object. Otherwise strings are returned, which is also the default.
123
123
  *
124
- * <dt><code>:quirks_mode?</code>
125
- * <dd>If set to <code>true</code>, if the parse is in quirks_mode, false
126
- * otherwise.
127
- *
128
124
  * <dt><code>:create_additions</code>
129
125
  * <dd>If set to <code>false</code>, the Parser doesn't create additions
130
126
  * even if a matching class and <code>create_id</code> was found. This option
@@ -136,9 +132,10 @@ public class Parser extends RubyObject {
136
132
  * <dt><code>:array_class</code>
137
133
  * <dd>Defaults to Array.
138
134
  *
139
- * <dt><code>:quirks_mode</code>
140
- * <dd>Enables quirks_mode for parser, that is for example parsing single
141
- * JSON values instead of documents is possible.
135
+ * <dt><code>:decimal_class</code>
136
+ * <dd>Specifies which class to use instead of the default (Float) when
137
+ * parsing decimal numbers. This class must accept a single string argument
138
+ * in its constructor.
142
139
  * </dl>
143
140
  */
144
141
  @JRubyMethod(name = "new", required = 1, optional = 1, meta = true)
@@ -161,15 +158,21 @@ public class Parser extends RubyObject {
161
158
  this.maxNesting = opts.getInt("max_nesting", DEFAULT_MAX_NESTING);
162
159
  this.allowNaN = opts.getBool("allow_nan", false);
163
160
  this.symbolizeNames = opts.getBool("symbolize_names", false);
164
- this.quirksMode = opts.getBool("quirks_mode", false);
165
161
  this.createId = opts.getString("create_id", getCreateId(context));
166
162
  this.createAdditions = opts.getBool("create_additions", false);
167
163
  this.objectClass = opts.getClass("object_class", runtime.getHash());
168
164
  this.arrayClass = opts.getClass("array_class", runtime.getArray());
165
+ this.decimalClass = opts.getClass("decimal_class", null);
169
166
  this.match_string = opts.getHash("match_string");
170
167
 
168
+ if(symbolizeNames && createAdditions) {
169
+ throw runtime.newArgumentError(
170
+ "options :symbolize_names and :create_additions cannot be " +
171
+ " used in conjunction"
172
+ );
173
+ }
171
174
  this.vSource = args[0].convertToString();
172
- if (!quirksMode) this.vSource = convertEncoding(context, vSource);
175
+ this.vSource = convertEncoding(context, vSource);
173
176
 
174
177
  return this;
175
178
  }
@@ -180,33 +183,16 @@ public class Parser extends RubyObject {
180
183
  * Returns the source string if no conversion is needed.
181
184
  */
182
185
  private RubyString convertEncoding(ThreadContext context, RubyString source) {
183
- ByteList bl = source.getByteList();
184
- int len = bl.length();
185
- if (len < 2) {
186
- throw Utils.newException(context, Utils.M_PARSER_ERROR,
187
- "A JSON text must at least contain two octets!");
188
- }
189
-
190
- if (info.encodingsSupported()) {
191
- RubyEncoding encoding = (RubyEncoding)source.encoding(context);
192
- if (encoding != info.ascii8bit.get()) {
193
- return (RubyString)source.encode(context, info.utf8.get());
194
- }
195
-
196
- String sniffedEncoding = sniffByteList(bl);
197
- if (sniffedEncoding == null) return source; // assume UTF-8
198
- return reinterpretEncoding(context, source, sniffedEncoding);
199
- }
200
-
201
- String sniffedEncoding = sniffByteList(bl);
202
- if (sniffedEncoding == null) return source; // assume UTF-8
203
- Ruby runtime = context.getRuntime();
204
- return (RubyString)info.jsonModule.get().
205
- callMethod(context, "iconv",
206
- new IRubyObject[] {
207
- runtime.newString("utf-8"),
208
- runtime.newString(sniffedEncoding),
209
- source});
186
+ RubyEncoding encoding = (RubyEncoding)source.encoding(context);
187
+ if (encoding == info.ascii8bit.get()) {
188
+ if (source.isFrozen()) {
189
+ source = (RubyString) source.dup();
190
+ }
191
+ source.force_encoding(context, info.utf8.get());
192
+ } else {
193
+ source = (RubyString) source.encode(context, info.utf8.get());
194
+ }
195
+ return source;
210
196
  }
211
197
 
212
198
  /**
@@ -259,17 +245,6 @@ public class Parser extends RubyObject {
259
245
  return checkAndGetSource().dup();
260
246
  }
261
247
 
262
- /**
263
- * <code>Parser#quirks_mode?()</code>
264
- *
265
- * <p>If set to <code>true</code>, if the parse is in quirks_mode, false
266
- * otherwise.
267
- */
268
- @JRubyMethod(name = "quirks_mode?")
269
- public IRubyObject quirks_mode_p(ThreadContext context) {
270
- return context.getRuntime().newBoolean(quirksMode);
271
- }
272
-
273
248
  public RubyString checkAndGetSource() {
274
249
  if (vSource != null) {
275
250
  return vSource;
@@ -393,7 +368,7 @@ public class Parser extends RubyObject {
393
368
  }
394
369
  }
395
370
  action parse_number {
396
- if (pe > fpc + 9 - (parser.quirksMode ? 1 : 0) &&
371
+ if (pe > fpc + 8 &&
397
372
  absSubSequence(fpc, fpc + 9).equals(JSON_MINUS_INFINITY)) {
398
373
 
399
374
  if (parser.allowNaN) {
@@ -520,13 +495,13 @@ public class Parser extends RubyObject {
520
495
 
521
496
  return p;
522
497
  }
523
-
498
+
524
499
  RubyInteger createInteger(int p, int new_p) {
525
500
  Ruby runtime = getRuntime();
526
501
  ByteList num = absSubSequence(p, new_p);
527
502
  return bytesToInum(runtime, num);
528
503
  }
529
-
504
+
530
505
  RubyInteger bytesToInum(Ruby runtime, ByteList num) {
531
506
  return runtime.is1_9() ?
532
507
  ConvertBytes.byteListToInum19(runtime, num, 10, true) :
@@ -556,7 +531,9 @@ public class Parser extends RubyObject {
556
531
  res.update(null, p);
557
532
  return;
558
533
  }
559
- RubyFloat number = createFloat(p, new_p);
534
+ IRubyObject number = parser.decimalClass == null ?
535
+ createFloat(p, new_p) : createCustomDecimal(p, new_p);
536
+
560
537
  res.update(number, new_p + 1);
561
538
  return;
562
539
  }
@@ -571,16 +548,23 @@ public class Parser extends RubyObject {
571
548
  if (cs < JSON_float_first_final) {
572
549
  return -1;
573
550
  }
574
-
551
+
575
552
  return p;
576
553
  }
577
-
554
+
578
555
  RubyFloat createFloat(int p, int new_p) {
579
556
  Ruby runtime = getRuntime();
580
557
  ByteList num = absSubSequence(p, new_p);
581
558
  return RubyFloat.newFloat(runtime, dc.parse(num, true, runtime.is1_9()));
582
559
  }
583
560
 
561
+ IRubyObject createCustomDecimal(int p, int new_p) {
562
+ Ruby runtime = getRuntime();
563
+ ByteList num = absSubSequence(p, new_p);
564
+ IRubyObject numString = runtime.newString(num.toString());
565
+ return parser.decimalClass.callMethod(context, "new", numString);
566
+ }
567
+
584
568
  %%{
585
569
  machine JSON_string;
586
570
  include JSON_common;
@@ -623,11 +607,11 @@ public class Parser extends RubyObject {
623
607
  %% write exec;
624
608
 
625
609
  if (parser.createAdditions) {
626
- RubyHash match_string = parser.match_string;
627
- if (match_string != null) {
610
+ RubyHash matchString = parser.match_string;
611
+ if (matchString != null) {
628
612
  final IRubyObject[] memoArray = { result, null };
629
613
  try {
630
- match_string.visitAll(new RubyHash.Visitor() {
614
+ matchString.visitAll(new RubyHash.Visitor() {
631
615
  @Override
632
616
  public void visit(IRubyObject pattern, IRubyObject klass) {
633
617
  if (pattern.callMethod(context, "===", memoArray[0]).isTrue()) {
@@ -647,8 +631,8 @@ public class Parser extends RubyObject {
647
631
  }
648
632
  }
649
633
 
650
- if (cs >= JSON_string_first_final && result != null) {
651
- if (info.encodingsSupported() && result instanceof RubyString) {
634
+ if (cs >= JSON_string_first_final && result != null) {
635
+ if (result instanceof RubyString) {
652
636
  ((RubyString)result).force_encoding(context, info.utf8.get());
653
637
  }
654
638
  res.update(result, p + 1);
@@ -765,7 +749,7 @@ public class Parser extends RubyObject {
765
749
  fhold;
766
750
  fbreak;
767
751
  }
768
-
752
+
769
753
  pair = ignore* begin_name >parse_name ignore* name_separator
770
754
  ignore* begin_value >parse_value;
771
755
  next_pair = ignore* value_separator pair;
@@ -835,60 +819,6 @@ public class Parser extends RubyObject {
835
819
 
836
820
  write data;
837
821
 
838
- action parse_object {
839
- currentNesting = 1;
840
- parseObject(res, fpc, pe);
841
- if (res.result == null) {
842
- fhold;
843
- fbreak;
844
- } else {
845
- result = res.result;
846
- fexec res.p;
847
- }
848
- }
849
-
850
- action parse_array {
851
- currentNesting = 1;
852
- parseArray(res, fpc, pe);
853
- if (res.result == null) {
854
- fhold;
855
- fbreak;
856
- } else {
857
- result = res.result;
858
- fexec res.p;
859
- }
860
- }
861
-
862
- main := ignore*
863
- ( begin_object >parse_object
864
- | begin_array >parse_array )
865
- ignore*;
866
- }%%
867
-
868
- public IRubyObject parseStrict() {
869
- int cs = EVIL;
870
- int p, pe;
871
- IRubyObject result = null;
872
- ParserResult res = new ParserResult();
873
-
874
- %% write init;
875
- p = byteList.begin();
876
- pe = p + byteList.length();
877
- %% write exec;
878
-
879
- if (cs >= JSON_first_final && p == pe) {
880
- return result;
881
- } else {
882
- throw unexpectedToken(p, pe);
883
- }
884
- }
885
-
886
- %%{
887
- machine JSON_quirks_mode;
888
- include JSON_common;
889
-
890
- write data;
891
-
892
822
  action parse_value {
893
823
  parseValue(res, fpc, pe);
894
824
  if (res.result == null) {
@@ -905,7 +835,7 @@ public class Parser extends RubyObject {
905
835
  ignore*;
906
836
  }%%
907
837
 
908
- public IRubyObject parseQuirksMode() {
838
+ public IRubyObject parseImplemetation() {
909
839
  int cs = EVIL;
910
840
  int p, pe;
911
841
  IRubyObject result = null;
@@ -916,7 +846,7 @@ public class Parser extends RubyObject {
916
846
  pe = p + byteList.length();
917
847
  %% write exec;
918
848
 
919
- if (cs >= JSON_quirks_mode_first_final && p == pe) {
849
+ if (cs >= JSON_first_final && p == pe) {
920
850
  return result;
921
851
  } else {
922
852
  throw unexpectedToken(p, pe);
@@ -924,12 +854,7 @@ public class Parser extends RubyObject {
924
854
  }
925
855
 
926
856
  public IRubyObject parse() {
927
- if (parser.quirksMode) {
928
- return parseQuirksMode();
929
- } else {
930
- return parseStrict();
931
- }
932
-
857
+ return parseImplemetation();
933
858
  }
934
859
 
935
860
  /**
@@ -90,10 +90,6 @@ final class RuntimeInfo {
90
90
  }
91
91
  }
92
92
 
93
- public boolean encodingsSupported() {
94
- return utf8 != null && utf8.get() != null;
95
- }
96
-
97
93
  public RubyEncoding getEncoding(ThreadContext context, String name) {
98
94
  synchronized (encodings) {
99
95
  WeakReference<RubyEncoding> encoding = encodings.get(name);
data/json-java.gemspec CHANGED
@@ -8,9 +8,8 @@ spec = Gem::Specification.new do |s|
8
8
  s.description = "A JSON implementation as a JRuby extension."
9
9
  s.author = "Daniel Luz"
10
10
  s.email = "dev+ruby@mernen.com"
11
- s.homepage = "http://json-jruby.rubyforge.org/"
11
+ s.homepage = "http://flori.github.com/json"
12
12
  s.platform = 'java'
13
- s.rubyforge_project = "json-jruby"
14
13
  s.licenses = ["Ruby"]
15
14
 
16
15
  s.files = Dir["{docs,lib,tests}/**/*"]
data/json.gemspec CHANGED
Binary file
data/json_pure.gemspec CHANGED
@@ -1,24 +1,25 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: json_pure 1.8.6 ruby lib
2
+ # stub: json_pure 2.3.0 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "json_pure".freeze
6
- s.version = "1.8.6"
6
+ s.version = "2.3.0"
7
7
 
8
8
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
9
9
  s.require_paths = ["lib".freeze]
10
10
  s.authors = ["Florian Frank".freeze]
11
- s.date = "2017-01-13"
11
+ s.date = "2019-12-11"
12
12
  s.description = "This is a JSON implementation in pure Ruby.".freeze
13
13
  s.email = "flori@ping.de".freeze
14
14
  s.extra_rdoc_files = ["README.md".freeze]
15
- s.files = ["./tests/test_json.rb".freeze, "./tests/test_json_addition.rb".freeze, "./tests/test_json_encoding.rb".freeze, "./tests/test_json_fixtures.rb".freeze, "./tests/test_json_generate.rb".freeze, "./tests/test_json_generic_object.rb".freeze, "./tests/test_json_string_matching.rb".freeze, "./tests/test_json_unicode.rb".freeze, ".gitignore".freeze, ".travis.yml".freeze, "CHANGES".freeze, "Gemfile".freeze, "README-json-jruby.markdown".freeze, "README.md".freeze, "Rakefile".freeze, "TODO".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, "tests/fixtures/fail1.json".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/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/setup_variant.rb".freeze, "tests/test_json.rb".freeze, "tests/test_json_addition.rb".freeze, "tests/test_json_encoding.rb".freeze, "tests/test_json_fixtures.rb".freeze, "tests/test_json_generate.rb".freeze, "tests/test_json_generic_object.rb".freeze, "tests/test_json_string_matching.rb".freeze, "tests/test_json_unicode.rb".freeze, "tools/diff.sh".freeze, "tools/fuzz.rb".freeze, "tools/server.rb".freeze]
15
+ s.files = ["./tests/test_helper.rb".freeze, ".gitignore".freeze, ".travis.yml".freeze, "CHANGES.md".freeze, "Gemfile".freeze, "LICENSE".freeze, "README-json-jruby.md".freeze, "README.md".freeze, "Rakefile".freeze, "VERSION".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/set.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
16
  s.homepage = "http://flori.github.com/json".freeze
17
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.8".freeze
18
+ s.rdoc_options = ["--title".freeze, "JSON implemention for ruby".freeze, "--main".freeze, "README.md".freeze]
19
+ s.required_ruby_version = Gem::Requirement.new(">= 1.9".freeze)
20
+ s.rubygems_version = "3.0.3".freeze
20
21
  s.summary = "JSON Implementation for Ruby".freeze
21
- s.test_files = ["./tests/test_json.rb".freeze, "./tests/test_json_addition.rb".freeze, "./tests/test_json_encoding.rb".freeze, "./tests/test_json_fixtures.rb".freeze, "./tests/test_json_generate.rb".freeze, "./tests/test_json_generic_object.rb".freeze, "./tests/test_json_string_matching.rb".freeze, "./tests/test_json_unicode.rb".freeze]
22
+ s.test_files = ["./tests/test_helper.rb".freeze]
22
23
 
23
24
  if s.respond_to? :specification_version then
24
25
  s.specification_version = 4
data/lib/json.rb CHANGED
@@ -1,3 +1,4 @@
1
+ #frozen_string_literal: false
1
2
  require 'json/common'
2
3
 
3
4
  ##
@@ -1,3 +1,4 @@
1
+ #frozen_string_literal: false
1
2
  unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
2
3
  require 'json'
3
4
  end
@@ -22,7 +23,7 @@ class BigDecimal
22
23
  end
23
24
 
24
25
  # return the JSON value
25
- def to_json(*)
26
- as_json.to_json
26
+ def to_json(*args)
27
+ as_json.to_json(*args)
27
28
  end
28
29
  end
@@ -1,3 +1,4 @@
1
+ #frozen_string_literal: false
1
2
  unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
2
3
  require 'json'
3
4
  end
@@ -22,7 +23,7 @@ class Complex
22
23
  end
23
24
 
24
25
  # Stores class name (Complex) along with real value <tt>r</tt> and imaginary value <tt>i</tt> as JSON string
25
- def to_json(*)
26
- as_json.to_json
26
+ def to_json(*args)
27
+ as_json.to_json(*args)
27
28
  end
28
- end
29
+ end
data/lib/json/add/core.rb CHANGED
@@ -1,3 +1,4 @@
1
+ #frozen_string_literal: false
1
2
  # This file requires the implementations of ruby core's custom objects for
2
3
  # serialisation/deserialisation.
3
4
 
data/lib/json/add/date.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
- # Date serialization/deserialization
7
7
  class Date
8
8
 
9
9
  # Deserializes JSON string by converting Julian year <tt>y</tt>, month
@@ -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>,
@@ -1,8 +1,8 @@
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
 
5
- # Exception serialization/deserialization
6
6
  class Exception
7
7
 
8
8
  # Deserializes JSON string by constructing new Exception object with message
@@ -1,13 +1,13 @@
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
10
- # <tt>v</tt> serialized by <tt>to_json</tt>.
10
+ # <tt>t</tt> serialized by <tt>to_json</tt>.
11
11
  def self.json_create(object)
12
12
  new(object['t'] || object[:t])
13
13
  end
@@ -23,7 +23,7 @@ class OpenStruct
23
23
  }
24
24
  end
25
25
 
26
- # Stores class name (OpenStruct) with this struct's values <tt>v</tt> as a
26
+ # Stores class name (OpenStruct) with this struct's values <tt>t</tt> as a
27
27
  # JSON string.
28
28
  def to_json(*args)
29
29
  as_json.to_json(*args)