json 1.8.6 → 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/.gitignore +0 -1
- data/.travis.yml +5 -3
- data/CHANGES +5 -5
- data/Gemfile +3 -1
- data/README.md +131 -84
- data/Rakefile +17 -10
- data/VERSION +1 -1
- data/ext/json/ext/generator/generator.c +1 -52
- data/ext/json/ext/generator/generator.h +0 -5
- data/ext/json/ext/parser/extconf.rb +3 -0
- data/ext/json/ext/parser/parser.c +304 -458
- data/ext/json/ext/parser/parser.h +0 -1
- data/ext/json/ext/parser/parser.rl +35 -152
- data/ext/json/extconf.rb +0 -1
- data/java/src/json/ext/Generator.java +2 -5
- data/java/src/json/ext/GeneratorState.java +2 -54
- data/java/src/json/ext/OptionsReader.java +1 -1
- data/java/src/json/ext/Parser.java +109 -409
- data/java/src/json/ext/Parser.rl +24 -117
- data/java/src/json/ext/RuntimeInfo.java +0 -4
- data/json.gemspec +0 -0
- data/json_pure.gemspec +7 -7
- data/lib/json.rb +1 -0
- 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.rb +2 -8
- data/lib/json/pure/generator.rb +51 -123
- data/lib/json/pure/parser.rb +28 -80
- data/lib/json/version.rb +2 -1
- 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} +65 -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/fuzz.rb +1 -9
- metadata +19 -32
- data/TODO +0 -1
- data/tests/fixtures/fail1.json +0 -1
- data/tests/setup_variant.rb +0 -11
- data/tests/test_json.rb +0 -519
- 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
@@ -52,10 +52,9 @@ public class Parser extends RubyObject {
|
|
52
52
|
private int maxNesting;
|
53
53
|
private boolean allowNaN;
|
54
54
|
private boolean symbolizeNames;
|
55
|
-
private boolean quirksMode;
|
56
55
|
private RubyClass objectClass;
|
57
56
|
private RubyClass arrayClass;
|
58
|
-
private RubyHash
|
57
|
+
private RubyHash matchString;
|
59
58
|
|
60
59
|
private static final int DEFAULT_MAX_NESTING = 100;
|
61
60
|
|
@@ -123,10 +122,6 @@ public class Parser extends RubyObject {
|
|
123
122
|
* <dd>If set to <code>true</code>, returns symbols for the names (keys) in
|
124
123
|
* a JSON object. Otherwise strings are returned, which is also the default.
|
125
124
|
*
|
126
|
-
* <dt><code>:quirks_mode?</code>
|
127
|
-
* <dd>If set to <code>true</code>, if the parse is in quirks_mode, false
|
128
|
-
* otherwise.
|
129
|
-
*
|
130
125
|
* <dt><code>:create_additions</code>
|
131
126
|
* <dd>If set to <code>false</code>, the Parser doesn't create additions
|
132
127
|
* even if a matching class and <code>create_id</code> was found. This option
|
@@ -138,9 +133,6 @@ public class Parser extends RubyObject {
|
|
138
133
|
* <dt><code>:array_class</code>
|
139
134
|
* <dd>Defaults to Array.
|
140
135
|
*
|
141
|
-
* <dt><code>:quirks_mode</code>
|
142
|
-
* <dd>Enables quirks_mode for parser, that is for example parsing single
|
143
|
-
* JSON values instead of documents is possible.
|
144
136
|
* </dl>
|
145
137
|
*/
|
146
138
|
@JRubyMethod(name = "new", required = 1, optional = 1, meta = true)
|
@@ -163,15 +155,20 @@ public class Parser extends RubyObject {
|
|
163
155
|
this.maxNesting = opts.getInt("max_nesting", DEFAULT_MAX_NESTING);
|
164
156
|
this.allowNaN = opts.getBool("allow_nan", false);
|
165
157
|
this.symbolizeNames = opts.getBool("symbolize_names", false);
|
166
|
-
this.quirksMode = opts.getBool("quirks_mode", false);
|
167
158
|
this.createId = opts.getString("create_id", getCreateId(context));
|
168
159
|
this.createAdditions = opts.getBool("create_additions", false);
|
169
160
|
this.objectClass = opts.getClass("object_class", runtime.getHash());
|
170
161
|
this.arrayClass = opts.getClass("array_class", runtime.getArray());
|
171
|
-
this.
|
162
|
+
this.matchString = opts.getHash("match_string");
|
172
163
|
|
164
|
+
if(symbolizeNames && createAdditions) {
|
165
|
+
throw runtime.newArgumentError(
|
166
|
+
"options :symbolize_names and :create_additions cannot be " +
|
167
|
+
" used in conjunction"
|
168
|
+
);
|
169
|
+
}
|
173
170
|
this.vSource = args[0].convertToString();
|
174
|
-
|
171
|
+
this.vSource = convertEncoding(context, vSource);
|
175
172
|
|
176
173
|
return this;
|
177
174
|
}
|
@@ -182,33 +179,13 @@ public class Parser extends RubyObject {
|
|
182
179
|
* Returns the source string if no conversion is needed.
|
183
180
|
*/
|
184
181
|
private RubyString convertEncoding(ThreadContext context, RubyString source) {
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
if (info.encodingsSupported()) {
|
193
|
-
RubyEncoding encoding = (RubyEncoding)source.encoding(context);
|
194
|
-
if (encoding != info.ascii8bit.get()) {
|
195
|
-
return (RubyString)source.encode(context, info.utf8.get());
|
196
|
-
}
|
197
|
-
|
198
|
-
String sniffedEncoding = sniffByteList(bl);
|
199
|
-
if (sniffedEncoding == null) return source; // assume UTF-8
|
200
|
-
return reinterpretEncoding(context, source, sniffedEncoding);
|
201
|
-
}
|
202
|
-
|
203
|
-
String sniffedEncoding = sniffByteList(bl);
|
204
|
-
if (sniffedEncoding == null) return source; // assume UTF-8
|
205
|
-
Ruby runtime = context.getRuntime();
|
206
|
-
return (RubyString)info.jsonModule.get().
|
207
|
-
callMethod(context, "iconv",
|
208
|
-
new IRubyObject[] {
|
209
|
-
runtime.newString("utf-8"),
|
210
|
-
runtime.newString(sniffedEncoding),
|
211
|
-
source});
|
182
|
+
RubyEncoding encoding = (RubyEncoding)source.encoding(context);
|
183
|
+
if (encoding == info.ascii8bit.get()) {
|
184
|
+
source.force_encoding(context, info.utf8.get());
|
185
|
+
} else {
|
186
|
+
source = (RubyString) source.encode(context, info.utf8.get());
|
187
|
+
}
|
188
|
+
return source;
|
212
189
|
}
|
213
190
|
|
214
191
|
/**
|
@@ -261,17 +238,6 @@ public class Parser extends RubyObject {
|
|
261
238
|
return checkAndGetSource().dup();
|
262
239
|
}
|
263
240
|
|
264
|
-
/**
|
265
|
-
* <code>Parser#quirks_mode?()</code>
|
266
|
-
*
|
267
|
-
* <p>If set to <code>true</code>, if the parse is in quirks_mode, false
|
268
|
-
* otherwise.
|
269
|
-
*/
|
270
|
-
@JRubyMethod(name = "quirks_mode?")
|
271
|
-
public IRubyObject quirks_mode_p(ThreadContext context) {
|
272
|
-
return context.getRuntime().newBoolean(quirksMode);
|
273
|
-
}
|
274
|
-
|
275
241
|
public RubyString checkAndGetSource() {
|
276
242
|
if (vSource != null) {
|
277
243
|
return vSource;
|
@@ -338,11 +304,11 @@ public class Parser extends RubyObject {
|
|
338
304
|
}
|
339
305
|
|
340
306
|
|
341
|
-
// line
|
307
|
+
// line 330 "Parser.rl"
|
342
308
|
|
343
309
|
|
344
310
|
|
345
|
-
// line
|
311
|
+
// line 312 "Parser.java"
|
346
312
|
private static byte[] init__JSON_value_actions_0()
|
347
313
|
{
|
348
314
|
return new byte [] {
|
@@ -456,7 +422,7 @@ static final int JSON_value_error = 0;
|
|
456
422
|
static final int JSON_value_en_main = 1;
|
457
423
|
|
458
424
|
|
459
|
-
// line
|
425
|
+
// line 436 "Parser.rl"
|
460
426
|
|
461
427
|
|
462
428
|
void parseValue(ParserResult res, int p, int pe) {
|
@@ -464,14 +430,14 @@ static final int JSON_value_en_main = 1;
|
|
464
430
|
IRubyObject result = null;
|
465
431
|
|
466
432
|
|
467
|
-
// line
|
433
|
+
// line 434 "Parser.java"
|
468
434
|
{
|
469
435
|
cs = JSON_value_start;
|
470
436
|
}
|
471
437
|
|
472
|
-
// line
|
438
|
+
// line 443 "Parser.rl"
|
473
439
|
|
474
|
-
// line
|
440
|
+
// line 441 "Parser.java"
|
475
441
|
{
|
476
442
|
int _klen;
|
477
443
|
int _trans = 0;
|
@@ -497,13 +463,13 @@ case 1:
|
|
497
463
|
while ( _nacts-- > 0 ) {
|
498
464
|
switch ( _JSON_value_actions[_acts++] ) {
|
499
465
|
case 9:
|
500
|
-
// line
|
466
|
+
// line 421 "Parser.rl"
|
501
467
|
{
|
502
468
|
p--;
|
503
469
|
{ p += 1; _goto_targ = 5; if (true) continue _goto;}
|
504
470
|
}
|
505
471
|
break;
|
506
|
-
// line
|
472
|
+
// line 473 "Parser.java"
|
507
473
|
}
|
508
474
|
}
|
509
475
|
|
@@ -566,25 +532,25 @@ case 1:
|
|
566
532
|
switch ( _JSON_value_actions[_acts++] )
|
567
533
|
{
|
568
534
|
case 0:
|
569
|
-
// line
|
535
|
+
// line 338 "Parser.rl"
|
570
536
|
{
|
571
537
|
result = getRuntime().getNil();
|
572
538
|
}
|
573
539
|
break;
|
574
540
|
case 1:
|
575
|
-
// line
|
541
|
+
// line 341 "Parser.rl"
|
576
542
|
{
|
577
543
|
result = getRuntime().getFalse();
|
578
544
|
}
|
579
545
|
break;
|
580
546
|
case 2:
|
581
|
-
// line
|
547
|
+
// line 344 "Parser.rl"
|
582
548
|
{
|
583
549
|
result = getRuntime().getTrue();
|
584
550
|
}
|
585
551
|
break;
|
586
552
|
case 3:
|
587
|
-
// line
|
553
|
+
// line 347 "Parser.rl"
|
588
554
|
{
|
589
555
|
if (parser.allowNaN) {
|
590
556
|
result = getConstant(CONST_NAN);
|
@@ -594,7 +560,7 @@ case 1:
|
|
594
560
|
}
|
595
561
|
break;
|
596
562
|
case 4:
|
597
|
-
// line
|
563
|
+
// line 354 "Parser.rl"
|
598
564
|
{
|
599
565
|
if (parser.allowNaN) {
|
600
566
|
result = getConstant(CONST_INFINITY);
|
@@ -604,9 +570,9 @@ case 1:
|
|
604
570
|
}
|
605
571
|
break;
|
606
572
|
case 5:
|
607
|
-
// line
|
573
|
+
// line 361 "Parser.rl"
|
608
574
|
{
|
609
|
-
if (pe > p +
|
575
|
+
if (pe > p + 8 &&
|
610
576
|
absSubSequence(p, p + 9).equals(JSON_MINUS_INFINITY)) {
|
611
577
|
|
612
578
|
if (parser.allowNaN) {
|
@@ -633,7 +599,7 @@ case 1:
|
|
633
599
|
}
|
634
600
|
break;
|
635
601
|
case 6:
|
636
|
-
// line
|
602
|
+
// line 387 "Parser.rl"
|
637
603
|
{
|
638
604
|
parseString(res, p, pe);
|
639
605
|
if (res.result == null) {
|
@@ -646,7 +612,7 @@ case 1:
|
|
646
612
|
}
|
647
613
|
break;
|
648
614
|
case 7:
|
649
|
-
// line
|
615
|
+
// line 397 "Parser.rl"
|
650
616
|
{
|
651
617
|
currentNesting++;
|
652
618
|
parseArray(res, p, pe);
|
@@ -661,7 +627,7 @@ case 1:
|
|
661
627
|
}
|
662
628
|
break;
|
663
629
|
case 8:
|
664
|
-
// line
|
630
|
+
// line 409 "Parser.rl"
|
665
631
|
{
|
666
632
|
currentNesting++;
|
667
633
|
parseObject(res, p, pe);
|
@@ -675,7 +641,7 @@ case 1:
|
|
675
641
|
}
|
676
642
|
}
|
677
643
|
break;
|
678
|
-
// line
|
644
|
+
// line 645 "Parser.java"
|
679
645
|
}
|
680
646
|
}
|
681
647
|
}
|
@@ -695,7 +661,7 @@ case 5:
|
|
695
661
|
break; }
|
696
662
|
}
|
697
663
|
|
698
|
-
// line
|
664
|
+
// line 444 "Parser.rl"
|
699
665
|
|
700
666
|
if (cs >= JSON_value_first_final && result != null) {
|
701
667
|
res.update(result, p);
|
@@ -705,7 +671,7 @@ case 5:
|
|
705
671
|
}
|
706
672
|
|
707
673
|
|
708
|
-
// line
|
674
|
+
// line 675 "Parser.java"
|
709
675
|
private static byte[] init__JSON_integer_actions_0()
|
710
676
|
{
|
711
677
|
return new byte [] {
|
@@ -804,7 +770,7 @@ static final int JSON_integer_error = 0;
|
|
804
770
|
static final int JSON_integer_en_main = 1;
|
805
771
|
|
806
772
|
|
807
|
-
// line
|
773
|
+
// line 463 "Parser.rl"
|
808
774
|
|
809
775
|
|
810
776
|
void parseInteger(ParserResult res, int p, int pe) {
|
@@ -822,15 +788,15 @@ static final int JSON_integer_en_main = 1;
|
|
822
788
|
int cs = EVIL;
|
823
789
|
|
824
790
|
|
825
|
-
// line
|
791
|
+
// line 792 "Parser.java"
|
826
792
|
{
|
827
793
|
cs = JSON_integer_start;
|
828
794
|
}
|
829
795
|
|
830
|
-
// line
|
796
|
+
// line 480 "Parser.rl"
|
831
797
|
int memo = p;
|
832
798
|
|
833
|
-
// line
|
799
|
+
// line 800 "Parser.java"
|
834
800
|
{
|
835
801
|
int _klen;
|
836
802
|
int _trans = 0;
|
@@ -911,13 +877,13 @@ case 1:
|
|
911
877
|
switch ( _JSON_integer_actions[_acts++] )
|
912
878
|
{
|
913
879
|
case 0:
|
914
|
-
// line
|
880
|
+
// line 457 "Parser.rl"
|
915
881
|
{
|
916
882
|
p--;
|
917
883
|
{ p += 1; _goto_targ = 5; if (true) continue _goto;}
|
918
884
|
}
|
919
885
|
break;
|
920
|
-
// line
|
886
|
+
// line 887 "Parser.java"
|
921
887
|
}
|
922
888
|
}
|
923
889
|
}
|
@@ -937,7 +903,7 @@ case 5:
|
|
937
903
|
break; }
|
938
904
|
}
|
939
905
|
|
940
|
-
// line
|
906
|
+
// line 482 "Parser.rl"
|
941
907
|
|
942
908
|
if (cs < JSON_integer_first_final) {
|
943
909
|
return -1;
|
@@ -959,7 +925,7 @@ case 5:
|
|
959
925
|
}
|
960
926
|
|
961
927
|
|
962
|
-
// line
|
928
|
+
// line 929 "Parser.java"
|
963
929
|
private static byte[] init__JSON_float_actions_0()
|
964
930
|
{
|
965
931
|
return new byte [] {
|
@@ -1061,7 +1027,7 @@ static final int JSON_float_error = 0;
|
|
1061
1027
|
static final int JSON_float_en_main = 1;
|
1062
1028
|
|
1063
1029
|
|
1064
|
-
// line
|
1030
|
+
// line 517 "Parser.rl"
|
1065
1031
|
|
1066
1032
|
|
1067
1033
|
void parseFloat(ParserResult res, int p, int pe) {
|
@@ -1079,15 +1045,15 @@ static final int JSON_float_en_main = 1;
|
|
1079
1045
|
int cs = EVIL;
|
1080
1046
|
|
1081
1047
|
|
1082
|
-
// line
|
1048
|
+
// line 1049 "Parser.java"
|
1083
1049
|
{
|
1084
1050
|
cs = JSON_float_start;
|
1085
1051
|
}
|
1086
1052
|
|
1087
|
-
// line
|
1053
|
+
// line 534 "Parser.rl"
|
1088
1054
|
int memo = p;
|
1089
1055
|
|
1090
|
-
// line
|
1056
|
+
// line 1057 "Parser.java"
|
1091
1057
|
{
|
1092
1058
|
int _klen;
|
1093
1059
|
int _trans = 0;
|
@@ -1168,13 +1134,13 @@ case 1:
|
|
1168
1134
|
switch ( _JSON_float_actions[_acts++] )
|
1169
1135
|
{
|
1170
1136
|
case 0:
|
1171
|
-
// line
|
1137
|
+
// line 508 "Parser.rl"
|
1172
1138
|
{
|
1173
1139
|
p--;
|
1174
1140
|
{ p += 1; _goto_targ = 5; if (true) continue _goto;}
|
1175
1141
|
}
|
1176
1142
|
break;
|
1177
|
-
// line
|
1143
|
+
// line 1144 "Parser.java"
|
1178
1144
|
}
|
1179
1145
|
}
|
1180
1146
|
}
|
@@ -1194,7 +1160,7 @@ case 5:
|
|
1194
1160
|
break; }
|
1195
1161
|
}
|
1196
1162
|
|
1197
|
-
// line
|
1163
|
+
// line 536 "Parser.rl"
|
1198
1164
|
|
1199
1165
|
if (cs < JSON_float_first_final) {
|
1200
1166
|
return -1;
|
@@ -1210,7 +1176,7 @@ case 5:
|
|
1210
1176
|
}
|
1211
1177
|
|
1212
1178
|
|
1213
|
-
// line
|
1179
|
+
// line 1180 "Parser.java"
|
1214
1180
|
private static byte[] init__JSON_string_actions_0()
|
1215
1181
|
{
|
1216
1182
|
return new byte [] {
|
@@ -1312,7 +1278,7 @@ static final int JSON_string_error = 0;
|
|
1312
1278
|
static final int JSON_string_en_main = 1;
|
1313
1279
|
|
1314
1280
|
|
1315
|
-
// line
|
1281
|
+
// line 581 "Parser.rl"
|
1316
1282
|
|
1317
1283
|
|
1318
1284
|
void parseString(ParserResult res, int p, int pe) {
|
@@ -1320,15 +1286,15 @@ static final int JSON_string_en_main = 1;
|
|
1320
1286
|
IRubyObject result = null;
|
1321
1287
|
|
1322
1288
|
|
1323
|
-
// line
|
1289
|
+
// line 1290 "Parser.java"
|
1324
1290
|
{
|
1325
1291
|
cs = JSON_string_start;
|
1326
1292
|
}
|
1327
1293
|
|
1328
|
-
// line
|
1294
|
+
// line 588 "Parser.rl"
|
1329
1295
|
int memo = p;
|
1330
1296
|
|
1331
|
-
// line
|
1297
|
+
// line 1298 "Parser.java"
|
1332
1298
|
{
|
1333
1299
|
int _klen;
|
1334
1300
|
int _trans = 0;
|
@@ -1409,7 +1375,7 @@ case 1:
|
|
1409
1375
|
switch ( _JSON_string_actions[_acts++] )
|
1410
1376
|
{
|
1411
1377
|
case 0:
|
1412
|
-
// line
|
1378
|
+
// line 556 "Parser.rl"
|
1413
1379
|
{
|
1414
1380
|
int offset = byteList.begin();
|
1415
1381
|
ByteList decoded = decoder.decode(byteList, memo + 1 - offset,
|
@@ -1424,13 +1390,13 @@ case 1:
|
|
1424
1390
|
}
|
1425
1391
|
break;
|
1426
1392
|
case 1:
|
1427
|
-
// line
|
1393
|
+
// line 569 "Parser.rl"
|
1428
1394
|
{
|
1429
1395
|
p--;
|
1430
1396
|
{ p += 1; _goto_targ = 5; if (true) continue _goto;}
|
1431
1397
|
}
|
1432
1398
|
break;
|
1433
|
-
// line
|
1399
|
+
// line 1400 "Parser.java"
|
1434
1400
|
}
|
1435
1401
|
}
|
1436
1402
|
}
|
@@ -1450,14 +1416,14 @@ case 5:
|
|
1450
1416
|
break; }
|
1451
1417
|
}
|
1452
1418
|
|
1453
|
-
// line
|
1419
|
+
// line 590 "Parser.rl"
|
1454
1420
|
|
1455
1421
|
if (parser.createAdditions) {
|
1456
|
-
RubyHash
|
1457
|
-
if (
|
1422
|
+
RubyHash matchString = parser.matchString;
|
1423
|
+
if (matchString != null) {
|
1458
1424
|
final IRubyObject[] memoArray = { result, null };
|
1459
1425
|
try {
|
1460
|
-
|
1426
|
+
matchString.visitAll(new RubyHash.Visitor() {
|
1461
1427
|
@Override
|
1462
1428
|
public void visit(IRubyObject pattern, IRubyObject klass) {
|
1463
1429
|
if (pattern.callMethod(context, "===", memoArray[0]).isTrue()) {
|
@@ -1478,7 +1444,7 @@ case 5:
|
|
1478
1444
|
}
|
1479
1445
|
|
1480
1446
|
if (cs >= JSON_string_first_final && result != null) {
|
1481
|
-
if (
|
1447
|
+
if (result instanceof RubyString) {
|
1482
1448
|
((RubyString)result).force_encoding(context, info.utf8.get());
|
1483
1449
|
}
|
1484
1450
|
res.update(result, p + 1);
|
@@ -1488,7 +1454,7 @@ case 5:
|
|
1488
1454
|
}
|
1489
1455
|
|
1490
1456
|
|
1491
|
-
// line
|
1457
|
+
// line 1458 "Parser.java"
|
1492
1458
|
private static byte[] init__JSON_array_actions_0()
|
1493
1459
|
{
|
1494
1460
|
return new byte [] {
|
@@ -1601,7 +1567,7 @@ static final int JSON_array_error = 0;
|
|
1601
1567
|
static final int JSON_array_en_main = 1;
|
1602
1568
|
|
1603
1569
|
|
1604
|
-
// line
|
1570
|
+
// line 663 "Parser.rl"
|
1605
1571
|
|
1606
1572
|
|
1607
1573
|
void parseArray(ParserResult res, int p, int pe) {
|
@@ -1621,14 +1587,14 @@ static final int JSON_array_en_main = 1;
|
|
1621
1587
|
}
|
1622
1588
|
|
1623
1589
|
|
1624
|
-
// line
|
1590
|
+
// line 1591 "Parser.java"
|
1625
1591
|
{
|
1626
1592
|
cs = JSON_array_start;
|
1627
1593
|
}
|
1628
1594
|
|
1629
|
-
// line
|
1595
|
+
// line 682 "Parser.rl"
|
1630
1596
|
|
1631
|
-
// line
|
1597
|
+
// line 1598 "Parser.java"
|
1632
1598
|
{
|
1633
1599
|
int _klen;
|
1634
1600
|
int _trans = 0;
|
@@ -1709,7 +1675,7 @@ case 1:
|
|
1709
1675
|
switch ( _JSON_array_actions[_acts++] )
|
1710
1676
|
{
|
1711
1677
|
case 0:
|
1712
|
-
// line
|
1678
|
+
// line 632 "Parser.rl"
|
1713
1679
|
{
|
1714
1680
|
parseValue(res, p, pe);
|
1715
1681
|
if (res.result == null) {
|
@@ -1726,13 +1692,13 @@ case 1:
|
|
1726
1692
|
}
|
1727
1693
|
break;
|
1728
1694
|
case 1:
|
1729
|
-
// line
|
1695
|
+
// line 647 "Parser.rl"
|
1730
1696
|
{
|
1731
1697
|
p--;
|
1732
1698
|
{ p += 1; _goto_targ = 5; if (true) continue _goto;}
|
1733
1699
|
}
|
1734
1700
|
break;
|
1735
|
-
// line
|
1701
|
+
// line 1702 "Parser.java"
|
1736
1702
|
}
|
1737
1703
|
}
|
1738
1704
|
}
|
@@ -1752,7 +1718,7 @@ case 5:
|
|
1752
1718
|
break; }
|
1753
1719
|
}
|
1754
1720
|
|
1755
|
-
// line
|
1721
|
+
// line 683 "Parser.rl"
|
1756
1722
|
|
1757
1723
|
if (cs >= JSON_array_first_final) {
|
1758
1724
|
res.update(result, p + 1);
|
@@ -1762,7 +1728,7 @@ case 5:
|
|
1762
1728
|
}
|
1763
1729
|
|
1764
1730
|
|
1765
|
-
// line
|
1731
|
+
// line 1732 "Parser.java"
|
1766
1732
|
private static byte[] init__JSON_object_actions_0()
|
1767
1733
|
{
|
1768
1734
|
return new byte [] {
|
@@ -1885,7 +1851,7 @@ static final int JSON_object_error = 0;
|
|
1885
1851
|
static final int JSON_object_en_main = 1;
|
1886
1852
|
|
1887
1853
|
|
1888
|
-
// line
|
1854
|
+
// line 742 "Parser.rl"
|
1889
1855
|
|
1890
1856
|
|
1891
1857
|
void parseObject(ParserResult res, int p, int pe) {
|
@@ -1910,14 +1876,14 @@ static final int JSON_object_en_main = 1;
|
|
1910
1876
|
}
|
1911
1877
|
|
1912
1878
|
|
1913
|
-
// line
|
1879
|
+
// line 1880 "Parser.java"
|
1914
1880
|
{
|
1915
1881
|
cs = JSON_object_start;
|
1916
1882
|
}
|
1917
1883
|
|
1918
|
-
// line
|
1884
|
+
// line 766 "Parser.rl"
|
1919
1885
|
|
1920
|
-
// line
|
1886
|
+
// line 1887 "Parser.java"
|
1921
1887
|
{
|
1922
1888
|
int _klen;
|
1923
1889
|
int _trans = 0;
|
@@ -1998,7 +1964,7 @@ case 1:
|
|
1998
1964
|
switch ( _JSON_object_actions[_acts++] )
|
1999
1965
|
{
|
2000
1966
|
case 0:
|
2001
|
-
// line
|
1967
|
+
// line 697 "Parser.rl"
|
2002
1968
|
{
|
2003
1969
|
parseValue(res, p, pe);
|
2004
1970
|
if (res.result == null) {
|
@@ -2015,7 +1981,7 @@ case 1:
|
|
2015
1981
|
}
|
2016
1982
|
break;
|
2017
1983
|
case 1:
|
2018
|
-
// line
|
1984
|
+
// line 712 "Parser.rl"
|
2019
1985
|
{
|
2020
1986
|
parseString(res, p, pe);
|
2021
1987
|
if (res.result == null) {
|
@@ -2035,13 +2001,13 @@ case 1:
|
|
2035
2001
|
}
|
2036
2002
|
break;
|
2037
2003
|
case 2:
|
2038
|
-
// line
|
2004
|
+
// line 730 "Parser.rl"
|
2039
2005
|
{
|
2040
2006
|
p--;
|
2041
2007
|
{ p += 1; _goto_targ = 5; if (true) continue _goto;}
|
2042
2008
|
}
|
2043
2009
|
break;
|
2044
|
-
// line
|
2010
|
+
// line 2011 "Parser.java"
|
2045
2011
|
}
|
2046
2012
|
}
|
2047
2013
|
}
|
@@ -2061,7 +2027,7 @@ case 5:
|
|
2061
2027
|
break; }
|
2062
2028
|
}
|
2063
2029
|
|
2064
|
-
// line
|
2030
|
+
// line 767 "Parser.rl"
|
2065
2031
|
|
2066
2032
|
if (cs < JSON_object_first_final) {
|
2067
2033
|
res.update(null, p + 1);
|
@@ -2094,11 +2060,11 @@ case 5:
|
|
2094
2060
|
}
|
2095
2061
|
|
2096
2062
|
|
2097
|
-
// line
|
2063
|
+
// line 2064 "Parser.java"
|
2098
2064
|
private static byte[] init__JSON_actions_0()
|
2099
2065
|
{
|
2100
2066
|
return new byte [] {
|
2101
|
-
0, 1, 0
|
2067
|
+
0, 1, 0
|
2102
2068
|
};
|
2103
2069
|
}
|
2104
2070
|
|
@@ -2108,7 +2074,7 @@ private static final byte _JSON_actions[] = init__JSON_actions_0();
|
|
2108
2074
|
private static byte[] init__JSON_key_offsets_0()
|
2109
2075
|
{
|
2110
2076
|
return new byte [] {
|
2111
|
-
0, 0,
|
2077
|
+
0, 0, 16, 18, 19, 21, 22, 24, 25, 27, 28
|
2112
2078
|
};
|
2113
2079
|
}
|
2114
2080
|
|
@@ -2118,9 +2084,9 @@ private static final byte _JSON_key_offsets[] = init__JSON_key_offsets_0();
|
|
2118
2084
|
private static char[] init__JSON_trans_keys_0()
|
2119
2085
|
{
|
2120
2086
|
return new char [] {
|
2121
|
-
13, 32,
|
2122
|
-
|
2123
|
-
|
2087
|
+
13, 32, 34, 45, 47, 73, 78, 91, 102, 110, 116, 123,
|
2088
|
+
9, 10, 48, 57, 42, 47, 42, 42, 47, 10, 42, 47,
|
2089
|
+
42, 42, 47, 10, 13, 32, 47, 9, 10, 0
|
2124
2090
|
};
|
2125
2091
|
}
|
2126
2092
|
|
@@ -2130,7 +2096,7 @@ private static final char _JSON_trans_keys[] = init__JSON_trans_keys_0();
|
|
2130
2096
|
private static byte[] init__JSON_single_lengths_0()
|
2131
2097
|
{
|
2132
2098
|
return new byte [] {
|
2133
|
-
0,
|
2099
|
+
0, 12, 2, 1, 2, 1, 2, 1, 2, 1, 3
|
2134
2100
|
};
|
2135
2101
|
}
|
2136
2102
|
|
@@ -2140,7 +2106,7 @@ private static final byte _JSON_single_lengths[] = init__JSON_single_lengths_0()
|
|
2140
2106
|
private static byte[] init__JSON_range_lengths_0()
|
2141
2107
|
{
|
2142
2108
|
return new byte [] {
|
2143
|
-
0,
|
2109
|
+
0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1
|
2144
2110
|
};
|
2145
2111
|
}
|
2146
2112
|
|
@@ -2150,7 +2116,7 @@ private static final byte _JSON_range_lengths[] = init__JSON_range_lengths_0();
|
|
2150
2116
|
private static byte[] init__JSON_index_offsets_0()
|
2151
2117
|
{
|
2152
2118
|
return new byte [] {
|
2153
|
-
0, 0,
|
2119
|
+
0, 0, 15, 18, 20, 23, 25, 28, 30, 33, 35
|
2154
2120
|
};
|
2155
2121
|
}
|
2156
2122
|
|
@@ -2160,9 +2126,10 @@ private static final byte _JSON_index_offsets[] = init__JSON_index_offsets_0();
|
|
2160
2126
|
private static byte[] init__JSON_indicies_0()
|
2161
2127
|
{
|
2162
2128
|
return new byte [] {
|
2163
|
-
0, 0, 2,
|
2164
|
-
|
2165
|
-
8,
|
2129
|
+
0, 0, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2,
|
2130
|
+
0, 2, 1, 4, 5, 1, 6, 4, 6, 7, 4, 7,
|
2131
|
+
5, 8, 9, 1, 10, 8, 10, 0, 8, 0, 9, 7,
|
2132
|
+
7, 11, 7, 1, 0
|
2166
2133
|
};
|
2167
2134
|
}
|
2168
2135
|
|
@@ -2172,8 +2139,7 @@ private static final byte _JSON_indicies[] = init__JSON_indicies_0();
|
|
2172
2139
|
private static byte[] init__JSON_trans_targs_0()
|
2173
2140
|
{
|
2174
2141
|
return new byte [] {
|
2175
|
-
1, 0,
|
2176
|
-
6
|
2142
|
+
1, 0, 10, 6, 3, 5, 4, 10, 7, 9, 8, 2
|
2177
2143
|
};
|
2178
2144
|
}
|
2179
2145
|
|
@@ -2183,8 +2149,7 @@ private static final byte _JSON_trans_targs[] = init__JSON_trans_targs_0();
|
|
2183
2149
|
private static byte[] init__JSON_trans_actions_0()
|
2184
2150
|
{
|
2185
2151
|
return new byte [] {
|
2186
|
-
0, 0,
|
2187
|
-
0
|
2152
|
+
0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
2188
2153
|
};
|
2189
2154
|
}
|
2190
2155
|
|
@@ -2198,26 +2163,26 @@ static final int JSON_error = 0;
|
|
2198
2163
|
static final int JSON_en_main = 1;
|
2199
2164
|
|
2200
2165
|
|
2201
|
-
// line
|
2166
|
+
// line 818 "Parser.rl"
|
2202
2167
|
|
2203
2168
|
|
2204
|
-
public IRubyObject
|
2169
|
+
public IRubyObject parseImplemetation() {
|
2205
2170
|
int cs = EVIL;
|
2206
2171
|
int p, pe;
|
2207
2172
|
IRubyObject result = null;
|
2208
2173
|
ParserResult res = new ParserResult();
|
2209
2174
|
|
2210
2175
|
|
2211
|
-
// line
|
2176
|
+
// line 2177 "Parser.java"
|
2212
2177
|
{
|
2213
2178
|
cs = JSON_start;
|
2214
2179
|
}
|
2215
2180
|
|
2216
|
-
// line
|
2181
|
+
// line 827 "Parser.rl"
|
2217
2182
|
p = byteList.begin();
|
2218
2183
|
pe = p + byteList.length();
|
2219
2184
|
|
2220
|
-
// line
|
2185
|
+
// line 2186 "Parser.java"
|
2221
2186
|
{
|
2222
2187
|
int _klen;
|
2223
2188
|
int _trans = 0;
|
@@ -2298,267 +2263,7 @@ case 1:
|
|
2298
2263
|
switch ( _JSON_actions[_acts++] )
|
2299
2264
|
{
|
2300
2265
|
case 0:
|
2301
|
-
// line
|
2302
|
-
{
|
2303
|
-
currentNesting = 1;
|
2304
|
-
parseObject(res, p, pe);
|
2305
|
-
if (res.result == null) {
|
2306
|
-
p--;
|
2307
|
-
{ p += 1; _goto_targ = 5; if (true) continue _goto;}
|
2308
|
-
} else {
|
2309
|
-
result = res.result;
|
2310
|
-
{p = (( res.p))-1;}
|
2311
|
-
}
|
2312
|
-
}
|
2313
|
-
break;
|
2314
|
-
case 1:
|
2315
|
-
// line 851 "Parser.rl"
|
2316
|
-
{
|
2317
|
-
currentNesting = 1;
|
2318
|
-
parseArray(res, p, pe);
|
2319
|
-
if (res.result == null) {
|
2320
|
-
p--;
|
2321
|
-
{ p += 1; _goto_targ = 5; if (true) continue _goto;}
|
2322
|
-
} else {
|
2323
|
-
result = res.result;
|
2324
|
-
{p = (( res.p))-1;}
|
2325
|
-
}
|
2326
|
-
}
|
2327
|
-
break;
|
2328
|
-
// line 2330 "Parser.java"
|
2329
|
-
}
|
2330
|
-
}
|
2331
|
-
}
|
2332
|
-
|
2333
|
-
case 2:
|
2334
|
-
if ( cs == 0 ) {
|
2335
|
-
_goto_targ = 5;
|
2336
|
-
continue _goto;
|
2337
|
-
}
|
2338
|
-
if ( ++p != pe ) {
|
2339
|
-
_goto_targ = 1;
|
2340
|
-
continue _goto;
|
2341
|
-
}
|
2342
|
-
case 4:
|
2343
|
-
case 5:
|
2344
|
-
}
|
2345
|
-
break; }
|
2346
|
-
}
|
2347
|
-
|
2348
|
-
// line 879 "Parser.rl"
|
2349
|
-
|
2350
|
-
if (cs >= JSON_first_final && p == pe) {
|
2351
|
-
return result;
|
2352
|
-
} else {
|
2353
|
-
throw unexpectedToken(p, pe);
|
2354
|
-
}
|
2355
|
-
}
|
2356
|
-
|
2357
|
-
|
2358
|
-
// line 2360 "Parser.java"
|
2359
|
-
private static byte[] init__JSON_quirks_mode_actions_0()
|
2360
|
-
{
|
2361
|
-
return new byte [] {
|
2362
|
-
0, 1, 0
|
2363
|
-
};
|
2364
|
-
}
|
2365
|
-
|
2366
|
-
private static final byte _JSON_quirks_mode_actions[] = init__JSON_quirks_mode_actions_0();
|
2367
|
-
|
2368
|
-
|
2369
|
-
private static byte[] init__JSON_quirks_mode_key_offsets_0()
|
2370
|
-
{
|
2371
|
-
return new byte [] {
|
2372
|
-
0, 0, 16, 18, 19, 21, 22, 24, 25, 27, 28
|
2373
|
-
};
|
2374
|
-
}
|
2375
|
-
|
2376
|
-
private static final byte _JSON_quirks_mode_key_offsets[] = init__JSON_quirks_mode_key_offsets_0();
|
2377
|
-
|
2378
|
-
|
2379
|
-
private static char[] init__JSON_quirks_mode_trans_keys_0()
|
2380
|
-
{
|
2381
|
-
return new char [] {
|
2382
|
-
13, 32, 34, 45, 47, 73, 78, 91, 102, 110, 116, 123,
|
2383
|
-
9, 10, 48, 57, 42, 47, 42, 42, 47, 10, 42, 47,
|
2384
|
-
42, 42, 47, 10, 13, 32, 47, 9, 10, 0
|
2385
|
-
};
|
2386
|
-
}
|
2387
|
-
|
2388
|
-
private static final char _JSON_quirks_mode_trans_keys[] = init__JSON_quirks_mode_trans_keys_0();
|
2389
|
-
|
2390
|
-
|
2391
|
-
private static byte[] init__JSON_quirks_mode_single_lengths_0()
|
2392
|
-
{
|
2393
|
-
return new byte [] {
|
2394
|
-
0, 12, 2, 1, 2, 1, 2, 1, 2, 1, 3
|
2395
|
-
};
|
2396
|
-
}
|
2397
|
-
|
2398
|
-
private static final byte _JSON_quirks_mode_single_lengths[] = init__JSON_quirks_mode_single_lengths_0();
|
2399
|
-
|
2400
|
-
|
2401
|
-
private static byte[] init__JSON_quirks_mode_range_lengths_0()
|
2402
|
-
{
|
2403
|
-
return new byte [] {
|
2404
|
-
0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1
|
2405
|
-
};
|
2406
|
-
}
|
2407
|
-
|
2408
|
-
private static final byte _JSON_quirks_mode_range_lengths[] = init__JSON_quirks_mode_range_lengths_0();
|
2409
|
-
|
2410
|
-
|
2411
|
-
private static byte[] init__JSON_quirks_mode_index_offsets_0()
|
2412
|
-
{
|
2413
|
-
return new byte [] {
|
2414
|
-
0, 0, 15, 18, 20, 23, 25, 28, 30, 33, 35
|
2415
|
-
};
|
2416
|
-
}
|
2417
|
-
|
2418
|
-
private static final byte _JSON_quirks_mode_index_offsets[] = init__JSON_quirks_mode_index_offsets_0();
|
2419
|
-
|
2420
|
-
|
2421
|
-
private static byte[] init__JSON_quirks_mode_indicies_0()
|
2422
|
-
{
|
2423
|
-
return new byte [] {
|
2424
|
-
0, 0, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2,
|
2425
|
-
0, 2, 1, 4, 5, 1, 6, 4, 6, 7, 4, 7,
|
2426
|
-
5, 8, 9, 1, 10, 8, 10, 0, 8, 0, 9, 7,
|
2427
|
-
7, 11, 7, 1, 0
|
2428
|
-
};
|
2429
|
-
}
|
2430
|
-
|
2431
|
-
private static final byte _JSON_quirks_mode_indicies[] = init__JSON_quirks_mode_indicies_0();
|
2432
|
-
|
2433
|
-
|
2434
|
-
private static byte[] init__JSON_quirks_mode_trans_targs_0()
|
2435
|
-
{
|
2436
|
-
return new byte [] {
|
2437
|
-
1, 0, 10, 6, 3, 5, 4, 10, 7, 9, 8, 2
|
2438
|
-
};
|
2439
|
-
}
|
2440
|
-
|
2441
|
-
private static final byte _JSON_quirks_mode_trans_targs[] = init__JSON_quirks_mode_trans_targs_0();
|
2442
|
-
|
2443
|
-
|
2444
|
-
private static byte[] init__JSON_quirks_mode_trans_actions_0()
|
2445
|
-
{
|
2446
|
-
return new byte [] {
|
2447
|
-
0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
2448
|
-
};
|
2449
|
-
}
|
2450
|
-
|
2451
|
-
private static final byte _JSON_quirks_mode_trans_actions[] = init__JSON_quirks_mode_trans_actions_0();
|
2452
|
-
|
2453
|
-
|
2454
|
-
static final int JSON_quirks_mode_start = 1;
|
2455
|
-
static final int JSON_quirks_mode_first_final = 10;
|
2456
|
-
static final int JSON_quirks_mode_error = 0;
|
2457
|
-
|
2458
|
-
static final int JSON_quirks_mode_en_main = 1;
|
2459
|
-
|
2460
|
-
|
2461
|
-
// line 907 "Parser.rl"
|
2462
|
-
|
2463
|
-
|
2464
|
-
public IRubyObject parseQuirksMode() {
|
2465
|
-
int cs = EVIL;
|
2466
|
-
int p, pe;
|
2467
|
-
IRubyObject result = null;
|
2468
|
-
ParserResult res = new ParserResult();
|
2469
|
-
|
2470
|
-
|
2471
|
-
// line 2473 "Parser.java"
|
2472
|
-
{
|
2473
|
-
cs = JSON_quirks_mode_start;
|
2474
|
-
}
|
2475
|
-
|
2476
|
-
// line 916 "Parser.rl"
|
2477
|
-
p = byteList.begin();
|
2478
|
-
pe = p + byteList.length();
|
2479
|
-
|
2480
|
-
// line 2482 "Parser.java"
|
2481
|
-
{
|
2482
|
-
int _klen;
|
2483
|
-
int _trans = 0;
|
2484
|
-
int _acts;
|
2485
|
-
int _nacts;
|
2486
|
-
int _keys;
|
2487
|
-
int _goto_targ = 0;
|
2488
|
-
|
2489
|
-
_goto: while (true) {
|
2490
|
-
switch ( _goto_targ ) {
|
2491
|
-
case 0:
|
2492
|
-
if ( p == pe ) {
|
2493
|
-
_goto_targ = 4;
|
2494
|
-
continue _goto;
|
2495
|
-
}
|
2496
|
-
if ( cs == 0 ) {
|
2497
|
-
_goto_targ = 5;
|
2498
|
-
continue _goto;
|
2499
|
-
}
|
2500
|
-
case 1:
|
2501
|
-
_match: do {
|
2502
|
-
_keys = _JSON_quirks_mode_key_offsets[cs];
|
2503
|
-
_trans = _JSON_quirks_mode_index_offsets[cs];
|
2504
|
-
_klen = _JSON_quirks_mode_single_lengths[cs];
|
2505
|
-
if ( _klen > 0 ) {
|
2506
|
-
int _lower = _keys;
|
2507
|
-
int _mid;
|
2508
|
-
int _upper = _keys + _klen - 1;
|
2509
|
-
while (true) {
|
2510
|
-
if ( _upper < _lower )
|
2511
|
-
break;
|
2512
|
-
|
2513
|
-
_mid = _lower + ((_upper-_lower) >> 1);
|
2514
|
-
if ( data[p] < _JSON_quirks_mode_trans_keys[_mid] )
|
2515
|
-
_upper = _mid - 1;
|
2516
|
-
else if ( data[p] > _JSON_quirks_mode_trans_keys[_mid] )
|
2517
|
-
_lower = _mid + 1;
|
2518
|
-
else {
|
2519
|
-
_trans += (_mid - _keys);
|
2520
|
-
break _match;
|
2521
|
-
}
|
2522
|
-
}
|
2523
|
-
_keys += _klen;
|
2524
|
-
_trans += _klen;
|
2525
|
-
}
|
2526
|
-
|
2527
|
-
_klen = _JSON_quirks_mode_range_lengths[cs];
|
2528
|
-
if ( _klen > 0 ) {
|
2529
|
-
int _lower = _keys;
|
2530
|
-
int _mid;
|
2531
|
-
int _upper = _keys + (_klen<<1) - 2;
|
2532
|
-
while (true) {
|
2533
|
-
if ( _upper < _lower )
|
2534
|
-
break;
|
2535
|
-
|
2536
|
-
_mid = _lower + (((_upper-_lower) >> 1) & ~1);
|
2537
|
-
if ( data[p] < _JSON_quirks_mode_trans_keys[_mid] )
|
2538
|
-
_upper = _mid - 2;
|
2539
|
-
else if ( data[p] > _JSON_quirks_mode_trans_keys[_mid+1] )
|
2540
|
-
_lower = _mid + 2;
|
2541
|
-
else {
|
2542
|
-
_trans += ((_mid - _keys)>>1);
|
2543
|
-
break _match;
|
2544
|
-
}
|
2545
|
-
}
|
2546
|
-
_trans += _klen;
|
2547
|
-
}
|
2548
|
-
} while (false);
|
2549
|
-
|
2550
|
-
_trans = _JSON_quirks_mode_indicies[_trans];
|
2551
|
-
cs = _JSON_quirks_mode_trans_targs[_trans];
|
2552
|
-
|
2553
|
-
if ( _JSON_quirks_mode_trans_actions[_trans] != 0 ) {
|
2554
|
-
_acts = _JSON_quirks_mode_trans_actions[_trans];
|
2555
|
-
_nacts = (int) _JSON_quirks_mode_actions[_acts++];
|
2556
|
-
while ( _nacts-- > 0 )
|
2557
|
-
{
|
2558
|
-
switch ( _JSON_quirks_mode_actions[_acts++] )
|
2559
|
-
{
|
2560
|
-
case 0:
|
2561
|
-
// line 893 "Parser.rl"
|
2266
|
+
// line 804 "Parser.rl"
|
2562
2267
|
{
|
2563
2268
|
parseValue(res, p, pe);
|
2564
2269
|
if (res.result == null) {
|
@@ -2570,7 +2275,7 @@ case 1:
|
|
2570
2275
|
}
|
2571
2276
|
}
|
2572
2277
|
break;
|
2573
|
-
// line
|
2278
|
+
// line 2279 "Parser.java"
|
2574
2279
|
}
|
2575
2280
|
}
|
2576
2281
|
}
|
@@ -2590,9 +2295,9 @@ case 5:
|
|
2590
2295
|
break; }
|
2591
2296
|
}
|
2592
2297
|
|
2593
|
-
// line
|
2298
|
+
// line 830 "Parser.rl"
|
2594
2299
|
|
2595
|
-
if (cs >=
|
2300
|
+
if (cs >= JSON_first_final && p == pe) {
|
2596
2301
|
return result;
|
2597
2302
|
} else {
|
2598
2303
|
throw unexpectedToken(p, pe);
|
@@ -2600,12 +2305,7 @@ case 5:
|
|
2600
2305
|
}
|
2601
2306
|
|
2602
2307
|
public IRubyObject parse() {
|
2603
|
-
|
2604
|
-
return parseQuirksMode();
|
2605
|
-
} else {
|
2606
|
-
return parseStrict();
|
2607
|
-
}
|
2608
|
-
|
2308
|
+
return parseImplemetation();
|
2609
2309
|
}
|
2610
2310
|
|
2611
2311
|
/**
|