json 1.0.1 → 1.0.2
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.
- data/CHANGES +2 -0
- data/Rakefile +8 -12
- data/VERSION +1 -1
- data/bin/prettify_json.rb +75 -0
- data/ext/json/ext/parser/parser.c +200 -197
- data/ext/json/ext/parser/parser.rl +1 -1
- data/lib/json/version.rb +1 -1
- data/tests/test_json.rb +1 -0
- metadata +72 -71
data/CHANGES
CHANGED
data/Rakefile
CHANGED
@@ -77,24 +77,20 @@ end
|
|
77
77
|
desc "Generate diagrams of ragel parser (ps)"
|
78
78
|
task :ragel_dot_ps do
|
79
79
|
root = 'diagrams'
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
sh "ragel parser.rl -S#{s} | #{RAGEL_CODEGEN} -p -V|dot -Tps -o#{root}/#{s}.ps"
|
85
|
-
end
|
80
|
+
specs = []
|
81
|
+
File.new(RAGEL_PATH).grep(/^\s*machine\s*(\S+);\s*$/) { specs << $1 }
|
82
|
+
for s in specs
|
83
|
+
sh "ragel #{RAGEL_PATH} -S#{s} | #{RAGEL_CODEGEN} -p -V|dot -Tps -o#{root}/#{s}.ps"
|
86
84
|
end
|
87
85
|
end
|
88
86
|
|
89
87
|
desc "Generate diagrams of ragel parser (png)"
|
90
88
|
task :ragel_dot_png do
|
91
89
|
root = 'diagrams'
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
sh "ragel parser.rl -S#{s} | #{RAGEL_CODEGEN} -p -V|dot -Tpng -o#{root}/#{s}.png"
|
97
|
-
end
|
90
|
+
specs = []
|
91
|
+
File.new(RAGEL_PATH).grep(/^\s*machine\s*(\S+);\s*$/) { specs << $1 }
|
92
|
+
for s in specs
|
93
|
+
sh "ragel #{RAGEL_PATH} -S#{s} | #{RAGEL_CODEGEN} -p -V|dot -Tpng -o#{root}/#{s}.png"
|
98
94
|
end
|
99
95
|
end
|
100
96
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.2
|
@@ -0,0 +1,75 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
$KCODE = 'U'
|
3
|
+
require 'json'
|
4
|
+
require 'fileutils'
|
5
|
+
include FileUtils
|
6
|
+
|
7
|
+
# Parses the argument array _args_, according to the pattern _s_, to
|
8
|
+
# retrieve the single character command line options from it. If _s_ is
|
9
|
+
# 'xy:' an option '-x' without an option argument is searched, and an
|
10
|
+
# option '-y foo' with an option argument ('foo').
|
11
|
+
#
|
12
|
+
# An option hash is returned with all found options set to true or the
|
13
|
+
# found option argument.
|
14
|
+
def go(s, args = ARGV)
|
15
|
+
b, v = s.scan(/(.)(:?)/).inject([{},{}]) { |t,(o,a)|
|
16
|
+
t[a.empty? ? 0 : 1][o] = a.empty? ? false : nil
|
17
|
+
t
|
18
|
+
}
|
19
|
+
while a = args.shift
|
20
|
+
a !~ /\A-(.+)/ and args.unshift a and break
|
21
|
+
p = $1
|
22
|
+
until p == ''
|
23
|
+
o = p.slice!(0, 1)
|
24
|
+
if v.key?(o)
|
25
|
+
v[o] = if p == '': args.shift or break 1 else p end
|
26
|
+
break
|
27
|
+
elsif b.key?(o)
|
28
|
+
b[o] = true
|
29
|
+
else
|
30
|
+
args.unshift a
|
31
|
+
break 1
|
32
|
+
end
|
33
|
+
end and break
|
34
|
+
end
|
35
|
+
b.merge(v)
|
36
|
+
end
|
37
|
+
|
38
|
+
opts = go 'slhi:', args = ARGV.dup
|
39
|
+
if opts['h'] || opts['l'] && opts['s']
|
40
|
+
puts <<EOT
|
41
|
+
Usage: #{File.basename($0)} [OPTION] [FILE]
|
42
|
+
|
43
|
+
If FILE is skipped, this scripts waits for input from STDIN. Otherwise
|
44
|
+
FILE is opened, read, and used as input for the prettifier.
|
45
|
+
|
46
|
+
OPTION can be
|
47
|
+
-s to output the shortest possible JSON (precludes -l)
|
48
|
+
-l to output a longer, better formatted JSON (precludes -s)
|
49
|
+
-i EXT prettifies FILE in place, saving a backup to FILE.EXT
|
50
|
+
-h this help
|
51
|
+
EOT
|
52
|
+
exit 0
|
53
|
+
end
|
54
|
+
|
55
|
+
filename = nil
|
56
|
+
json = JSON[
|
57
|
+
if args.empty?
|
58
|
+
STDIN.read
|
59
|
+
else
|
60
|
+
File.read filename = args.first
|
61
|
+
end
|
62
|
+
]
|
63
|
+
|
64
|
+
output = if opts['s']
|
65
|
+
JSON.fast_generate json
|
66
|
+
else # default is -l
|
67
|
+
JSON.pretty_generate json
|
68
|
+
end
|
69
|
+
|
70
|
+
if opts['i'] && filename
|
71
|
+
cp filename, "#{filename}.#{opts['i']}"
|
72
|
+
File.open(filename, 'w') { |f| f.puts output }
|
73
|
+
else
|
74
|
+
puts output
|
75
|
+
end
|
@@ -39,11 +39,11 @@ static char *JSON_parse_float(JSON_Parser *json, char *p, char *pe, VALUE *resul
|
|
39
39
|
|
40
40
|
|
41
41
|
#line 42 "parser.c"
|
42
|
-
static const int JSON_object_start =
|
43
|
-
|
42
|
+
static const int JSON_object_start = 1;
|
44
43
|
static const int JSON_object_first_final = 27;
|
44
|
+
static const int JSON_object_error = 0;
|
45
45
|
|
46
|
-
static const int
|
46
|
+
static const int JSON_object_en_main = 1;
|
47
47
|
|
48
48
|
#line 92 "parser.rl"
|
49
49
|
|
@@ -67,12 +67,12 @@ static char *JSON_parse_object(JSON_Parser *json, char *p, char *pe, VALUE *resu
|
|
67
67
|
goto _out;
|
68
68
|
switch ( cs )
|
69
69
|
{
|
70
|
-
case
|
70
|
+
case 1:
|
71
71
|
if ( (*p) == 123 )
|
72
72
|
goto st2;
|
73
|
-
goto
|
74
|
-
|
75
|
-
goto
|
73
|
+
goto st0;
|
74
|
+
st0:
|
75
|
+
goto _out0;
|
76
76
|
st2:
|
77
77
|
if ( ++p == pe )
|
78
78
|
goto _out2;
|
@@ -80,14 +80,14 @@ case 2:
|
|
80
80
|
switch( (*p) ) {
|
81
81
|
case 13: goto st2;
|
82
82
|
case 32: goto st2;
|
83
|
-
case 34: goto
|
83
|
+
case 34: goto tr2;
|
84
84
|
case 47: goto st23;
|
85
|
-
case 125: goto
|
85
|
+
case 125: goto tr4;
|
86
86
|
}
|
87
87
|
if ( 9 <= (*p) && (*p) <= 10 )
|
88
88
|
goto st2;
|
89
|
-
goto
|
90
|
-
|
89
|
+
goto st0;
|
90
|
+
tr2:
|
91
91
|
#line 78 "parser.rl"
|
92
92
|
{
|
93
93
|
char *np = JSON_parse_string(json, p, pe, &last_name);
|
@@ -107,7 +107,7 @@ case 3:
|
|
107
107
|
}
|
108
108
|
if ( 9 <= (*p) && (*p) <= 10 )
|
109
109
|
goto st3;
|
110
|
-
goto
|
110
|
+
goto st0;
|
111
111
|
st4:
|
112
112
|
if ( ++p == pe )
|
113
113
|
goto _out4;
|
@@ -116,7 +116,7 @@ case 4:
|
|
116
116
|
case 42: goto st5;
|
117
117
|
case 47: goto st7;
|
118
118
|
}
|
119
|
-
goto
|
119
|
+
goto st0;
|
120
120
|
st5:
|
121
121
|
if ( ++p == pe )
|
122
122
|
goto _out5;
|
@@ -161,7 +161,7 @@ case 8:
|
|
161
161
|
goto tr11;
|
162
162
|
} else if ( (*p) >= 9 )
|
163
163
|
goto st8;
|
164
|
-
goto
|
164
|
+
goto st0;
|
165
165
|
tr11:
|
166
166
|
#line 67 "parser.rl"
|
167
167
|
{
|
@@ -185,11 +185,11 @@ case 9:
|
|
185
185
|
case 32: goto st9;
|
186
186
|
case 44: goto st10;
|
187
187
|
case 47: goto st15;
|
188
|
-
case 125: goto
|
188
|
+
case 125: goto tr4;
|
189
189
|
}
|
190
190
|
if ( 9 <= (*p) && (*p) <= 10 )
|
191
191
|
goto st9;
|
192
|
-
goto
|
192
|
+
goto st0;
|
193
193
|
st10:
|
194
194
|
if ( ++p == pe )
|
195
195
|
goto _out10;
|
@@ -197,12 +197,12 @@ case 10:
|
|
197
197
|
switch( (*p) ) {
|
198
198
|
case 13: goto st10;
|
199
199
|
case 32: goto st10;
|
200
|
-
case 34: goto
|
200
|
+
case 34: goto tr2;
|
201
201
|
case 47: goto st11;
|
202
202
|
}
|
203
203
|
if ( 9 <= (*p) && (*p) <= 10 )
|
204
204
|
goto st10;
|
205
|
-
goto
|
205
|
+
goto st0;
|
206
206
|
st11:
|
207
207
|
if ( ++p == pe )
|
208
208
|
goto _out11;
|
@@ -211,7 +211,7 @@ case 11:
|
|
211
211
|
case 42: goto st12;
|
212
212
|
case 47: goto st14;
|
213
213
|
}
|
214
|
-
goto
|
214
|
+
goto st0;
|
215
215
|
st12:
|
216
216
|
if ( ++p == pe )
|
217
217
|
goto _out12;
|
@@ -243,7 +243,7 @@ case 15:
|
|
243
243
|
case 42: goto st16;
|
244
244
|
case 47: goto st18;
|
245
245
|
}
|
246
|
-
goto
|
246
|
+
goto st0;
|
247
247
|
st16:
|
248
248
|
if ( ++p == pe )
|
249
249
|
goto _out16;
|
@@ -267,7 +267,7 @@ case 18:
|
|
267
267
|
if ( (*p) == 10 )
|
268
268
|
goto st9;
|
269
269
|
goto st18;
|
270
|
-
|
270
|
+
tr4:
|
271
271
|
#line 83 "parser.rl"
|
272
272
|
{ goto _out27; }
|
273
273
|
goto st27;
|
@@ -276,7 +276,7 @@ st27:
|
|
276
276
|
goto _out27;
|
277
277
|
case 27:
|
278
278
|
#line 279 "parser.c"
|
279
|
-
goto
|
279
|
+
goto st0;
|
280
280
|
st19:
|
281
281
|
if ( ++p == pe )
|
282
282
|
goto _out19;
|
@@ -285,7 +285,7 @@ case 19:
|
|
285
285
|
case 42: goto st20;
|
286
286
|
case 47: goto st22;
|
287
287
|
}
|
288
|
-
goto
|
288
|
+
goto st0;
|
289
289
|
st20:
|
290
290
|
if ( ++p == pe )
|
291
291
|
goto _out20;
|
@@ -317,7 +317,7 @@ case 23:
|
|
317
317
|
case 42: goto st24;
|
318
318
|
case 47: goto st26;
|
319
319
|
}
|
320
|
-
goto
|
320
|
+
goto st0;
|
321
321
|
st24:
|
322
322
|
if ( ++p == pe )
|
323
323
|
goto _out24;
|
@@ -342,7 +342,7 @@ case 26:
|
|
342
342
|
goto st2;
|
343
343
|
goto st26;
|
344
344
|
}
|
345
|
-
|
345
|
+
_out0: cs = 0; goto _out;
|
346
346
|
_out2: cs = 2; goto _out;
|
347
347
|
_out3: cs = 3; goto _out;
|
348
348
|
_out4: cs = 4; goto _out;
|
@@ -390,11 +390,11 @@ case 26:
|
|
390
390
|
|
391
391
|
|
392
392
|
#line 393 "parser.c"
|
393
|
-
static const int JSON_value_start =
|
394
|
-
|
393
|
+
static const int JSON_value_start = 1;
|
395
394
|
static const int JSON_value_first_final = 12;
|
395
|
+
static const int JSON_value_error = 0;
|
396
396
|
|
397
|
-
static const int
|
397
|
+
static const int JSON_value_en_main = 1;
|
398
398
|
|
399
399
|
#line 167 "parser.rl"
|
400
400
|
|
@@ -416,47 +416,29 @@ static char *JSON_parse_value(JSON_Parser *json, char *p, char *pe, VALUE *resul
|
|
416
416
|
goto _out;
|
417
417
|
switch ( cs )
|
418
418
|
{
|
419
|
-
case
|
419
|
+
case 1:
|
420
420
|
switch( (*p) ) {
|
421
|
-
case 34: goto
|
422
|
-
case 45: goto
|
423
|
-
case 91: goto
|
421
|
+
case 34: goto tr0;
|
422
|
+
case 45: goto tr2;
|
423
|
+
case 91: goto tr3;
|
424
424
|
case 102: goto st2;
|
425
425
|
case 110: goto st6;
|
426
426
|
case 116: goto st9;
|
427
|
-
case 123: goto
|
427
|
+
case 123: goto tr7;
|
428
428
|
}
|
429
429
|
if ( 48 <= (*p) && (*p) <= 57 )
|
430
|
-
goto
|
431
|
-
goto
|
432
|
-
|
433
|
-
goto
|
434
|
-
|
435
|
-
#line 123 "parser.rl"
|
436
|
-
{
|
437
|
-
*result = Qnil;
|
438
|
-
}
|
439
|
-
goto st12;
|
440
|
-
tr6:
|
441
|
-
#line 126 "parser.rl"
|
442
|
-
{
|
443
|
-
*result = Qfalse;
|
444
|
-
}
|
445
|
-
goto st12;
|
446
|
-
tr7:
|
447
|
-
#line 129 "parser.rl"
|
448
|
-
{
|
449
|
-
*result = Qtrue;
|
450
|
-
}
|
451
|
-
goto st12;
|
452
|
-
tr9:
|
430
|
+
goto tr2;
|
431
|
+
goto st0;
|
432
|
+
st0:
|
433
|
+
goto _out0;
|
434
|
+
tr0:
|
453
435
|
#line 132 "parser.rl"
|
454
436
|
{
|
455
437
|
char *np = JSON_parse_string(json, p, pe, result);
|
456
438
|
if (np == NULL) goto _out12; else {p = (( np))-1;}
|
457
439
|
}
|
458
440
|
goto st12;
|
459
|
-
|
441
|
+
tr2:
|
460
442
|
#line 137 "parser.rl"
|
461
443
|
{
|
462
444
|
char *np;
|
@@ -467,20 +449,38 @@ tr10:
|
|
467
449
|
goto _out12;
|
468
450
|
}
|
469
451
|
goto st12;
|
470
|
-
|
452
|
+
tr3:
|
471
453
|
#line 146 "parser.rl"
|
472
454
|
{
|
473
455
|
char *np = JSON_parse_array(json, p, pe, result);
|
474
456
|
if (np == NULL) goto _out12; else {p = (( np))-1;}
|
475
457
|
}
|
476
458
|
goto st12;
|
477
|
-
|
459
|
+
tr7:
|
478
460
|
#line 151 "parser.rl"
|
479
461
|
{
|
480
462
|
char *np = JSON_parse_object(json, p, pe, result);
|
481
463
|
if (np == NULL) goto _out12; else {p = (( np))-1;}
|
482
464
|
}
|
483
465
|
goto st12;
|
466
|
+
tr11:
|
467
|
+
#line 126 "parser.rl"
|
468
|
+
{
|
469
|
+
*result = Qfalse;
|
470
|
+
}
|
471
|
+
goto st12;
|
472
|
+
tr14:
|
473
|
+
#line 123 "parser.rl"
|
474
|
+
{
|
475
|
+
*result = Qnil;
|
476
|
+
}
|
477
|
+
goto st12;
|
478
|
+
tr17:
|
479
|
+
#line 129 "parser.rl"
|
480
|
+
{
|
481
|
+
*result = Qtrue;
|
482
|
+
}
|
483
|
+
goto st12;
|
484
484
|
st12:
|
485
485
|
if ( ++p == pe )
|
486
486
|
goto _out12;
|
@@ -488,79 +488,79 @@ case 12:
|
|
488
488
|
#line 156 "parser.rl"
|
489
489
|
{ goto _out12; }
|
490
490
|
#line 491 "parser.c"
|
491
|
-
goto
|
491
|
+
goto st0;
|
492
492
|
st2:
|
493
493
|
if ( ++p == pe )
|
494
494
|
goto _out2;
|
495
495
|
case 2:
|
496
496
|
if ( (*p) == 97 )
|
497
497
|
goto st3;
|
498
|
-
goto
|
498
|
+
goto st0;
|
499
499
|
st3:
|
500
500
|
if ( ++p == pe )
|
501
501
|
goto _out3;
|
502
502
|
case 3:
|
503
503
|
if ( (*p) == 108 )
|
504
504
|
goto st4;
|
505
|
-
goto
|
505
|
+
goto st0;
|
506
506
|
st4:
|
507
507
|
if ( ++p == pe )
|
508
508
|
goto _out4;
|
509
509
|
case 4:
|
510
510
|
if ( (*p) == 115 )
|
511
511
|
goto st5;
|
512
|
-
goto
|
512
|
+
goto st0;
|
513
513
|
st5:
|
514
514
|
if ( ++p == pe )
|
515
515
|
goto _out5;
|
516
516
|
case 5:
|
517
517
|
if ( (*p) == 101 )
|
518
|
-
goto
|
519
|
-
goto
|
518
|
+
goto tr11;
|
519
|
+
goto st0;
|
520
520
|
st6:
|
521
521
|
if ( ++p == pe )
|
522
522
|
goto _out6;
|
523
523
|
case 6:
|
524
524
|
if ( (*p) == 117 )
|
525
525
|
goto st7;
|
526
|
-
goto
|
526
|
+
goto st0;
|
527
527
|
st7:
|
528
528
|
if ( ++p == pe )
|
529
529
|
goto _out7;
|
530
530
|
case 7:
|
531
531
|
if ( (*p) == 108 )
|
532
532
|
goto st8;
|
533
|
-
goto
|
533
|
+
goto st0;
|
534
534
|
st8:
|
535
535
|
if ( ++p == pe )
|
536
536
|
goto _out8;
|
537
537
|
case 8:
|
538
538
|
if ( (*p) == 108 )
|
539
|
-
goto
|
540
|
-
goto
|
539
|
+
goto tr14;
|
540
|
+
goto st0;
|
541
541
|
st9:
|
542
542
|
if ( ++p == pe )
|
543
543
|
goto _out9;
|
544
544
|
case 9:
|
545
545
|
if ( (*p) == 114 )
|
546
546
|
goto st10;
|
547
|
-
goto
|
547
|
+
goto st0;
|
548
548
|
st10:
|
549
549
|
if ( ++p == pe )
|
550
550
|
goto _out10;
|
551
551
|
case 10:
|
552
552
|
if ( (*p) == 117 )
|
553
553
|
goto st11;
|
554
|
-
goto
|
554
|
+
goto st0;
|
555
555
|
st11:
|
556
556
|
if ( ++p == pe )
|
557
557
|
goto _out11;
|
558
558
|
case 11:
|
559
559
|
if ( (*p) == 101 )
|
560
|
-
goto
|
561
|
-
goto
|
560
|
+
goto tr17;
|
561
|
+
goto st0;
|
562
562
|
}
|
563
|
-
|
563
|
+
_out0: cs = 0; goto _out;
|
564
564
|
_out12: cs = 12; goto _out;
|
565
565
|
_out2: cs = 2; goto _out;
|
566
566
|
_out3: cs = 3; goto _out;
|
@@ -586,11 +586,11 @@ case 11:
|
|
586
586
|
|
587
587
|
|
588
588
|
#line 589 "parser.c"
|
589
|
-
static const int JSON_integer_start =
|
590
|
-
|
589
|
+
static const int JSON_integer_start = 1;
|
591
590
|
static const int JSON_integer_first_final = 5;
|
591
|
+
static const int JSON_integer_error = 0;
|
592
592
|
|
593
|
-
static const int
|
593
|
+
static const int JSON_integer_en_main = 1;
|
594
594
|
|
595
595
|
#line 191 "parser.rl"
|
596
596
|
|
@@ -613,16 +613,16 @@ static char *JSON_parse_integer(JSON_Parser *json, char *p, char *pe, VALUE *res
|
|
613
613
|
goto _out;
|
614
614
|
switch ( cs )
|
615
615
|
{
|
616
|
-
case
|
616
|
+
case 1:
|
617
617
|
switch( (*p) ) {
|
618
618
|
case 45: goto st2;
|
619
619
|
case 48: goto st3;
|
620
620
|
}
|
621
621
|
if ( 49 <= (*p) && (*p) <= 57 )
|
622
622
|
goto st4;
|
623
|
-
goto
|
624
|
-
|
625
|
-
goto
|
623
|
+
goto st0;
|
624
|
+
st0:
|
625
|
+
goto _out0;
|
626
626
|
st2:
|
627
627
|
if ( ++p == pe )
|
628
628
|
goto _out2;
|
@@ -631,13 +631,13 @@ case 2:
|
|
631
631
|
goto st3;
|
632
632
|
if ( 49 <= (*p) && (*p) <= 57 )
|
633
633
|
goto st4;
|
634
|
-
goto
|
634
|
+
goto st0;
|
635
635
|
st3:
|
636
636
|
if ( ++p == pe )
|
637
637
|
goto _out3;
|
638
638
|
case 3:
|
639
639
|
if ( 48 <= (*p) && (*p) <= 57 )
|
640
|
-
goto
|
640
|
+
goto st0;
|
641
641
|
goto tr4;
|
642
642
|
tr4:
|
643
643
|
#line 188 "parser.rl"
|
@@ -648,7 +648,7 @@ st5:
|
|
648
648
|
goto _out5;
|
649
649
|
case 5:
|
650
650
|
#line 651 "parser.c"
|
651
|
-
goto
|
651
|
+
goto st0;
|
652
652
|
st4:
|
653
653
|
if ( ++p == pe )
|
654
654
|
goto _out4;
|
@@ -657,7 +657,7 @@ case 4:
|
|
657
657
|
goto st4;
|
658
658
|
goto tr4;
|
659
659
|
}
|
660
|
-
|
660
|
+
_out0: cs = 0; goto _out;
|
661
661
|
_out2: cs = 2; goto _out;
|
662
662
|
_out3: cs = 3; goto _out;
|
663
663
|
_out5: cs = 5; goto _out;
|
@@ -678,11 +678,11 @@ case 4:
|
|
678
678
|
|
679
679
|
|
680
680
|
#line 681 "parser.c"
|
681
|
-
static const int JSON_float_start =
|
682
|
-
|
681
|
+
static const int JSON_float_start = 1;
|
683
682
|
static const int JSON_float_first_final = 10;
|
683
|
+
static const int JSON_float_error = 0;
|
684
684
|
|
685
|
-
static const int
|
685
|
+
static const int JSON_float_en_main = 1;
|
686
686
|
|
687
687
|
#line 222 "parser.rl"
|
688
688
|
|
@@ -705,16 +705,16 @@ static char *JSON_parse_float(JSON_Parser *json, char *p, char *pe, VALUE *resul
|
|
705
705
|
goto _out;
|
706
706
|
switch ( cs )
|
707
707
|
{
|
708
|
-
case
|
708
|
+
case 1:
|
709
709
|
switch( (*p) ) {
|
710
710
|
case 45: goto st2;
|
711
711
|
case 48: goto st3;
|
712
712
|
}
|
713
713
|
if ( 49 <= (*p) && (*p) <= 57 )
|
714
714
|
goto st9;
|
715
|
-
goto
|
716
|
-
|
717
|
-
goto
|
715
|
+
goto st0;
|
716
|
+
st0:
|
717
|
+
goto _out0;
|
718
718
|
st2:
|
719
719
|
if ( ++p == pe )
|
720
720
|
goto _out2;
|
@@ -723,21 +723,24 @@ case 2:
|
|
723
723
|
goto st3;
|
724
724
|
if ( 49 <= (*p) && (*p) <= 57 )
|
725
725
|
goto st9;
|
726
|
-
goto
|
726
|
+
goto st0;
|
727
727
|
st3:
|
728
728
|
if ( ++p == pe )
|
729
729
|
goto _out3;
|
730
730
|
case 3:
|
731
|
-
|
732
|
-
goto st4;
|
733
|
-
|
731
|
+
switch( (*p) ) {
|
732
|
+
case 46: goto st4;
|
733
|
+
case 69: goto st6;
|
734
|
+
case 101: goto st6;
|
735
|
+
}
|
736
|
+
goto st0;
|
734
737
|
st4:
|
735
738
|
if ( ++p == pe )
|
736
739
|
goto _out4;
|
737
740
|
case 4:
|
738
741
|
if ( 48 <= (*p) && (*p) <= 57 )
|
739
742
|
goto st5;
|
740
|
-
goto
|
743
|
+
goto st0;
|
741
744
|
st5:
|
742
745
|
if ( ++p == pe )
|
743
746
|
goto _out5;
|
@@ -750,9 +753,9 @@ case 5:
|
|
750
753
|
if ( 48 <= (*p) && (*p) <= 57 )
|
751
754
|
goto st5;
|
752
755
|
} else if ( (*p) >= 45 )
|
753
|
-
goto
|
754
|
-
goto
|
755
|
-
|
756
|
+
goto st0;
|
757
|
+
goto tr7;
|
758
|
+
tr7:
|
756
759
|
#line 216 "parser.rl"
|
757
760
|
{ goto _out10; }
|
758
761
|
goto st10;
|
@@ -760,8 +763,8 @@ st10:
|
|
760
763
|
if ( ++p == pe )
|
761
764
|
goto _out10;
|
762
765
|
case 10:
|
763
|
-
#line
|
764
|
-
goto
|
766
|
+
#line 767 "parser.c"
|
767
|
+
goto st0;
|
765
768
|
st6:
|
766
769
|
if ( ++p == pe )
|
767
770
|
goto _out6;
|
@@ -772,28 +775,28 @@ case 6:
|
|
772
775
|
}
|
773
776
|
if ( 48 <= (*p) && (*p) <= 57 )
|
774
777
|
goto st8;
|
775
|
-
goto
|
778
|
+
goto st0;
|
776
779
|
st7:
|
777
780
|
if ( ++p == pe )
|
778
781
|
goto _out7;
|
779
782
|
case 7:
|
780
783
|
if ( 48 <= (*p) && (*p) <= 57 )
|
781
784
|
goto st8;
|
782
|
-
goto
|
785
|
+
goto st0;
|
783
786
|
st8:
|
784
787
|
if ( ++p == pe )
|
785
788
|
goto _out8;
|
786
789
|
case 8:
|
787
790
|
switch( (*p) ) {
|
788
|
-
case 69: goto
|
789
|
-
case 101: goto
|
791
|
+
case 69: goto st0;
|
792
|
+
case 101: goto st0;
|
790
793
|
}
|
791
794
|
if ( (*p) > 46 ) {
|
792
795
|
if ( 48 <= (*p) && (*p) <= 57 )
|
793
796
|
goto st8;
|
794
797
|
} else if ( (*p) >= 45 )
|
795
|
-
goto
|
796
|
-
goto
|
798
|
+
goto st0;
|
799
|
+
goto tr7;
|
797
800
|
st9:
|
798
801
|
if ( ++p == pe )
|
799
802
|
goto _out9;
|
@@ -805,9 +808,9 @@ case 9:
|
|
805
808
|
}
|
806
809
|
if ( 48 <= (*p) && (*p) <= 57 )
|
807
810
|
goto st9;
|
808
|
-
goto
|
811
|
+
goto st0;
|
809
812
|
}
|
810
|
-
|
813
|
+
_out0: cs = 0; goto _out;
|
811
814
|
_out2: cs = 2; goto _out;
|
812
815
|
_out3: cs = 3; goto _out;
|
813
816
|
_out4: cs = 4; goto _out;
|
@@ -833,12 +836,12 @@ case 9:
|
|
833
836
|
|
834
837
|
|
835
838
|
|
836
|
-
#line
|
837
|
-
static const int JSON_array_start =
|
838
|
-
|
839
|
+
#line 840 "parser.c"
|
840
|
+
static const int JSON_array_start = 1;
|
839
841
|
static const int JSON_array_first_final = 17;
|
842
|
+
static const int JSON_array_error = 0;
|
840
843
|
|
841
|
-
static const int
|
844
|
+
static const int JSON_array_en_main = 1;
|
842
845
|
|
843
846
|
#line 267 "parser.rl"
|
844
847
|
|
@@ -849,24 +852,24 @@ static char *JSON_parse_array(JSON_Parser *json, char *p, char *pe, VALUE *resul
|
|
849
852
|
*result = rb_ary_new();
|
850
853
|
|
851
854
|
|
852
|
-
#line
|
855
|
+
#line 856 "parser.c"
|
853
856
|
{
|
854
857
|
cs = JSON_array_start;
|
855
858
|
}
|
856
859
|
#line 275 "parser.rl"
|
857
860
|
|
858
|
-
#line
|
861
|
+
#line 862 "parser.c"
|
859
862
|
{
|
860
863
|
if ( p == pe )
|
861
864
|
goto _out;
|
862
865
|
switch ( cs )
|
863
866
|
{
|
864
|
-
case
|
867
|
+
case 1:
|
865
868
|
if ( (*p) == 91 )
|
866
869
|
goto st2;
|
867
|
-
goto
|
868
|
-
|
869
|
-
goto
|
870
|
+
goto st0;
|
871
|
+
st0:
|
872
|
+
goto _out0;
|
870
873
|
st2:
|
871
874
|
if ( ++p == pe )
|
872
875
|
goto _out2;
|
@@ -874,23 +877,23 @@ case 2:
|
|
874
877
|
switch( (*p) ) {
|
875
878
|
case 13: goto st2;
|
876
879
|
case 32: goto st2;
|
877
|
-
case 34: goto
|
878
|
-
case 45: goto
|
880
|
+
case 34: goto tr2;
|
881
|
+
case 45: goto tr2;
|
879
882
|
case 47: goto st13;
|
880
|
-
case 91: goto
|
881
|
-
case 93: goto
|
882
|
-
case 102: goto
|
883
|
-
case 110: goto
|
884
|
-
case 116: goto
|
885
|
-
case 123: goto
|
883
|
+
case 91: goto tr2;
|
884
|
+
case 93: goto tr4;
|
885
|
+
case 102: goto tr2;
|
886
|
+
case 110: goto tr2;
|
887
|
+
case 116: goto tr2;
|
888
|
+
case 123: goto tr2;
|
886
889
|
}
|
887
890
|
if ( (*p) > 10 ) {
|
888
891
|
if ( 48 <= (*p) && (*p) <= 57 )
|
889
|
-
goto
|
892
|
+
goto tr2;
|
890
893
|
} else if ( (*p) >= 9 )
|
891
894
|
goto st2;
|
892
|
-
goto
|
893
|
-
|
895
|
+
goto st0;
|
896
|
+
tr2:
|
894
897
|
#line 248 "parser.rl"
|
895
898
|
{
|
896
899
|
VALUE v = Qnil;
|
@@ -907,17 +910,17 @@ st3:
|
|
907
910
|
if ( ++p == pe )
|
908
911
|
goto _out3;
|
909
912
|
case 3:
|
910
|
-
#line
|
913
|
+
#line 914 "parser.c"
|
911
914
|
switch( (*p) ) {
|
912
915
|
case 13: goto st3;
|
913
916
|
case 32: goto st3;
|
914
917
|
case 44: goto st4;
|
915
918
|
case 47: goto st9;
|
916
|
-
case 93: goto
|
919
|
+
case 93: goto tr4;
|
917
920
|
}
|
918
921
|
if ( 9 <= (*p) && (*p) <= 10 )
|
919
922
|
goto st3;
|
920
|
-
goto
|
923
|
+
goto st0;
|
921
924
|
st4:
|
922
925
|
if ( ++p == pe )
|
923
926
|
goto _out4;
|
@@ -925,21 +928,21 @@ case 4:
|
|
925
928
|
switch( (*p) ) {
|
926
929
|
case 13: goto st4;
|
927
930
|
case 32: goto st4;
|
928
|
-
case 34: goto
|
929
|
-
case 45: goto
|
931
|
+
case 34: goto tr2;
|
932
|
+
case 45: goto tr2;
|
930
933
|
case 47: goto st5;
|
931
|
-
case 91: goto
|
932
|
-
case 102: goto
|
933
|
-
case 110: goto
|
934
|
-
case 116: goto
|
935
|
-
case 123: goto
|
934
|
+
case 91: goto tr2;
|
935
|
+
case 102: goto tr2;
|
936
|
+
case 110: goto tr2;
|
937
|
+
case 116: goto tr2;
|
938
|
+
case 123: goto tr2;
|
936
939
|
}
|
937
940
|
if ( (*p) > 10 ) {
|
938
941
|
if ( 48 <= (*p) && (*p) <= 57 )
|
939
|
-
goto
|
942
|
+
goto tr2;
|
940
943
|
} else if ( (*p) >= 9 )
|
941
944
|
goto st4;
|
942
|
-
goto
|
945
|
+
goto st0;
|
943
946
|
st5:
|
944
947
|
if ( ++p == pe )
|
945
948
|
goto _out5;
|
@@ -948,7 +951,7 @@ case 5:
|
|
948
951
|
case 42: goto st6;
|
949
952
|
case 47: goto st8;
|
950
953
|
}
|
951
|
-
goto
|
954
|
+
goto st0;
|
952
955
|
st6:
|
953
956
|
if ( ++p == pe )
|
954
957
|
goto _out6;
|
@@ -980,7 +983,7 @@ case 9:
|
|
980
983
|
case 42: goto st10;
|
981
984
|
case 47: goto st12;
|
982
985
|
}
|
983
|
-
goto
|
986
|
+
goto st0;
|
984
987
|
st10:
|
985
988
|
if ( ++p == pe )
|
986
989
|
goto _out10;
|
@@ -1004,7 +1007,7 @@ case 12:
|
|
1004
1007
|
if ( (*p) == 10 )
|
1005
1008
|
goto st3;
|
1006
1009
|
goto st12;
|
1007
|
-
|
1010
|
+
tr4:
|
1008
1011
|
#line 259 "parser.rl"
|
1009
1012
|
{ goto _out17; }
|
1010
1013
|
goto st17;
|
@@ -1012,8 +1015,8 @@ st17:
|
|
1012
1015
|
if ( ++p == pe )
|
1013
1016
|
goto _out17;
|
1014
1017
|
case 17:
|
1015
|
-
#line
|
1016
|
-
goto
|
1018
|
+
#line 1019 "parser.c"
|
1019
|
+
goto st0;
|
1017
1020
|
st13:
|
1018
1021
|
if ( ++p == pe )
|
1019
1022
|
goto _out13;
|
@@ -1022,7 +1025,7 @@ case 13:
|
|
1022
1025
|
case 42: goto st14;
|
1023
1026
|
case 47: goto st16;
|
1024
1027
|
}
|
1025
|
-
goto
|
1028
|
+
goto st0;
|
1026
1029
|
st14:
|
1027
1030
|
if ( ++p == pe )
|
1028
1031
|
goto _out14;
|
@@ -1047,7 +1050,7 @@ case 16:
|
|
1047
1050
|
goto st2;
|
1048
1051
|
goto st16;
|
1049
1052
|
}
|
1050
|
-
|
1053
|
+
_out0: cs = 0; goto _out;
|
1051
1054
|
_out2: cs = 2; goto _out;
|
1052
1055
|
_out3: cs = 3; goto _out;
|
1053
1056
|
_out4: cs = 4; goto _out;
|
@@ -1129,12 +1132,12 @@ static VALUE json_string_escape(char *p, char *pe)
|
|
1129
1132
|
}
|
1130
1133
|
|
1131
1134
|
|
1132
|
-
#line
|
1133
|
-
static const int JSON_string_start =
|
1134
|
-
|
1135
|
+
#line 1136 "parser.c"
|
1136
|
+
static const int JSON_string_start = 1;
|
1135
1137
|
static const int JSON_string_first_final = 8;
|
1138
|
+
static const int JSON_string_error = 0;
|
1136
1139
|
|
1137
|
-
static const int
|
1140
|
+
static const int JSON_string_en_main = 1;
|
1138
1141
|
|
1139
1142
|
#line 350 "parser.rl"
|
1140
1143
|
|
@@ -1145,37 +1148,37 @@ static char *JSON_parse_string(JSON_Parser *json, char *p, char *pe, VALUE *resu
|
|
1145
1148
|
|
1146
1149
|
*result = rb_str_new("", 0);
|
1147
1150
|
|
1148
|
-
#line
|
1151
|
+
#line 1152 "parser.c"
|
1149
1152
|
{
|
1150
1153
|
cs = JSON_string_start;
|
1151
1154
|
}
|
1152
1155
|
#line 358 "parser.rl"
|
1153
1156
|
json->memo = p;
|
1154
1157
|
|
1155
|
-
#line
|
1158
|
+
#line 1159 "parser.c"
|
1156
1159
|
{
|
1157
1160
|
if ( p == pe )
|
1158
1161
|
goto _out;
|
1159
1162
|
switch ( cs )
|
1160
1163
|
{
|
1161
|
-
case
|
1164
|
+
case 1:
|
1162
1165
|
if ( (*p) == 34 )
|
1163
1166
|
goto st2;
|
1164
|
-
goto
|
1165
|
-
|
1166
|
-
goto
|
1167
|
+
goto st0;
|
1168
|
+
st0:
|
1169
|
+
goto _out0;
|
1167
1170
|
st2:
|
1168
1171
|
if ( ++p == pe )
|
1169
1172
|
goto _out2;
|
1170
1173
|
case 2:
|
1171
1174
|
switch( (*p) ) {
|
1172
|
-
case 34: goto
|
1175
|
+
case 34: goto tr2;
|
1173
1176
|
case 92: goto st3;
|
1174
1177
|
}
|
1175
1178
|
if ( 0 <= (*p) && (*p) <= 31 )
|
1176
|
-
goto
|
1179
|
+
goto st0;
|
1177
1180
|
goto st2;
|
1178
|
-
|
1181
|
+
tr2:
|
1179
1182
|
#line 342 "parser.rl"
|
1180
1183
|
{
|
1181
1184
|
*result = json_string_escape(json->memo + 1, p);
|
@@ -1188,8 +1191,8 @@ st8:
|
|
1188
1191
|
if ( ++p == pe )
|
1189
1192
|
goto _out8;
|
1190
1193
|
case 8:
|
1191
|
-
#line
|
1192
|
-
goto
|
1194
|
+
#line 1195 "parser.c"
|
1195
|
+
goto st0;
|
1193
1196
|
st3:
|
1194
1197
|
if ( ++p == pe )
|
1195
1198
|
goto _out3;
|
@@ -1205,7 +1208,7 @@ case 3:
|
|
1205
1208
|
case 116: goto st2;
|
1206
1209
|
case 117: goto st4;
|
1207
1210
|
}
|
1208
|
-
goto
|
1211
|
+
goto st0;
|
1209
1212
|
st4:
|
1210
1213
|
if ( ++p == pe )
|
1211
1214
|
goto _out4;
|
@@ -1218,7 +1221,7 @@ case 4:
|
|
1218
1221
|
goto st5;
|
1219
1222
|
} else
|
1220
1223
|
goto st5;
|
1221
|
-
goto
|
1224
|
+
goto st0;
|
1222
1225
|
st5:
|
1223
1226
|
if ( ++p == pe )
|
1224
1227
|
goto _out5;
|
@@ -1231,7 +1234,7 @@ case 5:
|
|
1231
1234
|
goto st6;
|
1232
1235
|
} else
|
1233
1236
|
goto st6;
|
1234
|
-
goto
|
1237
|
+
goto st0;
|
1235
1238
|
st6:
|
1236
1239
|
if ( ++p == pe )
|
1237
1240
|
goto _out6;
|
@@ -1244,7 +1247,7 @@ case 6:
|
|
1244
1247
|
goto st7;
|
1245
1248
|
} else
|
1246
1249
|
goto st7;
|
1247
|
-
goto
|
1250
|
+
goto st0;
|
1248
1251
|
st7:
|
1249
1252
|
if ( ++p == pe )
|
1250
1253
|
goto _out7;
|
@@ -1257,9 +1260,9 @@ case 7:
|
|
1257
1260
|
goto st2;
|
1258
1261
|
} else
|
1259
1262
|
goto st2;
|
1260
|
-
goto
|
1263
|
+
goto st0;
|
1261
1264
|
}
|
1262
|
-
|
1265
|
+
_out0: cs = 0; goto _out;
|
1263
1266
|
_out2: cs = 2; goto _out;
|
1264
1267
|
_out8: cs = 8; goto _out;
|
1265
1268
|
_out3: cs = 3; goto _out;
|
@@ -1281,12 +1284,12 @@ case 7:
|
|
1281
1284
|
|
1282
1285
|
|
1283
1286
|
|
1284
|
-
#line
|
1285
|
-
static const int JSON_start =
|
1286
|
-
|
1287
|
+
#line 1288 "parser.c"
|
1288
|
+
static const int JSON_start = 1;
|
1287
1289
|
static const int JSON_first_final = 10;
|
1290
|
+
static const int JSON_error = 0;
|
1288
1291
|
|
1289
|
-
static const int
|
1292
|
+
static const int JSON_en_main = 1;
|
1290
1293
|
|
1291
1294
|
#line 390 "parser.rl"
|
1292
1295
|
|
@@ -1352,7 +1355,7 @@ static VALUE cParser_parse(VALUE self)
|
|
1352
1355
|
VALUE result = Qnil;
|
1353
1356
|
|
1354
1357
|
|
1355
|
-
#line
|
1358
|
+
#line 1359 "parser.c"
|
1356
1359
|
{
|
1357
1360
|
cs = JSON_start;
|
1358
1361
|
}
|
@@ -1360,28 +1363,28 @@ static VALUE cParser_parse(VALUE self)
|
|
1360
1363
|
p = json->source;
|
1361
1364
|
pe = p + json->len;
|
1362
1365
|
|
1363
|
-
#line
|
1366
|
+
#line 1367 "parser.c"
|
1364
1367
|
{
|
1365
1368
|
if ( p == pe )
|
1366
1369
|
goto _out;
|
1367
1370
|
switch ( cs )
|
1368
1371
|
{
|
1369
|
-
|
1372
|
+
st1:
|
1370
1373
|
if ( ++p == pe )
|
1371
|
-
goto
|
1372
|
-
case
|
1374
|
+
goto _out1;
|
1375
|
+
case 1:
|
1373
1376
|
switch( (*p) ) {
|
1374
|
-
case 13: goto
|
1375
|
-
case 32: goto
|
1377
|
+
case 13: goto st1;
|
1378
|
+
case 32: goto st1;
|
1376
1379
|
case 47: goto st2;
|
1377
|
-
case 91: goto
|
1378
|
-
case 123: goto
|
1380
|
+
case 91: goto tr3;
|
1381
|
+
case 123: goto tr4;
|
1379
1382
|
}
|
1380
1383
|
if ( 9 <= (*p) && (*p) <= 10 )
|
1381
|
-
goto
|
1382
|
-
goto
|
1383
|
-
|
1384
|
-
goto
|
1384
|
+
goto st1;
|
1385
|
+
goto st0;
|
1386
|
+
st0:
|
1387
|
+
goto _out0;
|
1385
1388
|
st2:
|
1386
1389
|
if ( ++p == pe )
|
1387
1390
|
goto _out2;
|
@@ -1390,7 +1393,7 @@ case 2:
|
|
1390
1393
|
case 42: goto st3;
|
1391
1394
|
case 47: goto st5;
|
1392
1395
|
}
|
1393
|
-
goto
|
1396
|
+
goto st0;
|
1394
1397
|
st3:
|
1395
1398
|
if ( ++p == pe )
|
1396
1399
|
goto _out3;
|
@@ -1404,7 +1407,7 @@ st4:
|
|
1404
1407
|
case 4:
|
1405
1408
|
switch( (*p) ) {
|
1406
1409
|
case 42: goto st4;
|
1407
|
-
case 47: goto
|
1410
|
+
case 47: goto st1;
|
1408
1411
|
}
|
1409
1412
|
goto st3;
|
1410
1413
|
st5:
|
@@ -1412,16 +1415,16 @@ st5:
|
|
1412
1415
|
goto _out5;
|
1413
1416
|
case 5:
|
1414
1417
|
if ( (*p) == 10 )
|
1415
|
-
goto
|
1418
|
+
goto st1;
|
1416
1419
|
goto st5;
|
1417
|
-
|
1420
|
+
tr3:
|
1418
1421
|
#line 381 "parser.rl"
|
1419
1422
|
{
|
1420
1423
|
char *np = JSON_parse_array(json, p, pe, &result);
|
1421
1424
|
if (np == NULL) goto _out10; else {p = (( np))-1;}
|
1422
1425
|
}
|
1423
1426
|
goto st10;
|
1424
|
-
|
1427
|
+
tr4:
|
1425
1428
|
#line 376 "parser.rl"
|
1426
1429
|
{
|
1427
1430
|
char *np = JSON_parse_object(json, p, pe, &result);
|
@@ -1432,7 +1435,7 @@ st10:
|
|
1432
1435
|
if ( ++p == pe )
|
1433
1436
|
goto _out10;
|
1434
1437
|
case 10:
|
1435
|
-
#line
|
1438
|
+
#line 1439 "parser.c"
|
1436
1439
|
switch( (*p) ) {
|
1437
1440
|
case 13: goto st10;
|
1438
1441
|
case 32: goto st10;
|
@@ -1440,7 +1443,7 @@ case 10:
|
|
1440
1443
|
}
|
1441
1444
|
if ( 9 <= (*p) && (*p) <= 10 )
|
1442
1445
|
goto st10;
|
1443
|
-
goto
|
1446
|
+
goto st0;
|
1444
1447
|
st6:
|
1445
1448
|
if ( ++p == pe )
|
1446
1449
|
goto _out6;
|
@@ -1449,7 +1452,7 @@ case 6:
|
|
1449
1452
|
case 42: goto st7;
|
1450
1453
|
case 47: goto st9;
|
1451
1454
|
}
|
1452
|
-
goto
|
1455
|
+
goto st0;
|
1453
1456
|
st7:
|
1454
1457
|
if ( ++p == pe )
|
1455
1458
|
goto _out7;
|
@@ -1474,8 +1477,8 @@ case 9:
|
|
1474
1477
|
goto st10;
|
1475
1478
|
goto st9;
|
1476
1479
|
}
|
1477
|
-
_out0: cs = 0; goto _out;
|
1478
1480
|
_out1: cs = 1; goto _out;
|
1481
|
+
_out0: cs = 0; goto _out;
|
1479
1482
|
_out2: cs = 2; goto _out;
|
1480
1483
|
_out3: cs = 3; goto _out;
|
1481
1484
|
_out4: cs = 4; goto _out;
|
@@ -217,7 +217,7 @@ static char *JSON_parse_integer(JSON_Parser *json, char *p, char *pe, VALUE *res
|
|
217
217
|
|
218
218
|
main := '-'? (
|
219
219
|
(('0' | [1-9][0-9]*) '.' [0-9]+ ([Ee] [+\-]?[0-9]+)?)
|
220
|
-
| ([1-9][0-9]* ([Ee] [+\-]?[0-9]+))
|
220
|
+
| (('0' | [1-9][0-9]*) ([Ee] [+\-]?[0-9]+))
|
221
221
|
) (^[0-9Ee.\-] @exit );
|
222
222
|
}%%
|
223
223
|
|
data/lib/json/version.rb
CHANGED
data/tests/test_json.rb
CHANGED
@@ -48,6 +48,7 @@ class TC_JSON < Test::Unit::TestCase
|
|
48
48
|
assert_equal([-23], parse('[-23]'))
|
49
49
|
assert_equal([23], parse('[23]'))
|
50
50
|
assert_equal([0.23], parse('[0.23]'))
|
51
|
+
assert_equal([0.0], parse('[0e0]'))
|
51
52
|
assert_raises(JSON::ParserError) { parse('[+23.2]') }
|
52
53
|
assert_raises(JSON::ParserError) { parse('[+23]') }
|
53
54
|
assert_raises(JSON::ParserError) { parse('[.23]') }
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
|
|
3
3
|
specification_version: 1
|
4
4
|
name: json
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 1.0.
|
7
|
-
date: 2007-
|
6
|
+
version: 1.0.2
|
7
|
+
date: 2007-04-02 00:00:00 +02:00
|
8
8
|
summary: A JSON implementation as a Ruby extension
|
9
9
|
require_paths:
|
10
10
|
- ext/json/ext
|
@@ -31,101 +31,102 @@ post_install_message:
|
|
31
31
|
authors:
|
32
32
|
- Florian Frank
|
33
33
|
files:
|
34
|
-
- bin
|
35
|
-
- VERSION
|
36
|
-
- TODO
|
37
|
-
- tests
|
38
|
-
- GPL
|
39
|
-
- install.rb
|
40
34
|
- ext
|
35
|
+
- tools
|
36
|
+
- tests
|
37
|
+
- lib
|
41
38
|
- diagrams
|
39
|
+
- bin
|
40
|
+
- data
|
42
41
|
- benchmarks
|
42
|
+
- GPL
|
43
43
|
- Rakefile
|
44
|
-
-
|
45
|
-
-
|
46
|
-
- README
|
47
|
-
- tools
|
44
|
+
- TODO
|
45
|
+
- VERSION
|
48
46
|
- CHANGES
|
49
|
-
-
|
50
|
-
-
|
51
|
-
-
|
52
|
-
-
|
47
|
+
- install.rb
|
48
|
+
- README
|
49
|
+
- ext/json
|
50
|
+
- ext/json/ext
|
51
|
+
- ext/json/ext/generator
|
52
|
+
- ext/json/ext/parser
|
53
|
+
- ext/json/ext/generator/generator.c
|
54
|
+
- ext/json/ext/generator/unicode.c
|
55
|
+
- ext/json/ext/generator/extconf.rb
|
56
|
+
- ext/json/ext/generator/unicode.h
|
57
|
+
- ext/json/ext/parser/unicode.c
|
58
|
+
- ext/json/ext/parser/extconf.rb
|
59
|
+
- ext/json/ext/parser/parser.rl
|
60
|
+
- ext/json/ext/parser/unicode.h
|
61
|
+
- ext/json/ext/parser/parser.c
|
62
|
+
- tools/fuzz.rb
|
63
|
+
- tools/server.rb
|
53
64
|
- tests/fixtures
|
54
65
|
- tests/test_json_unicode.rb
|
66
|
+
- tests/test_json_fixtures.rb
|
55
67
|
- tests/test_json_generate.rb
|
56
68
|
- tests/test_json_addition.rb
|
57
|
-
- tests/
|
58
|
-
- tests/
|
59
|
-
- tests/fixtures/fail26.json
|
60
|
-
- tests/fixtures/fail16.json
|
61
|
-
- tests/fixtures/fail28.json
|
62
|
-
- tests/fixtures/fail25.json
|
63
|
-
- tests/fixtures/pass18.json
|
64
|
-
- tests/fixtures/fail9.json
|
65
|
-
- tests/fixtures/fail20.json
|
66
|
-
- tests/fixtures/fail24.json
|
67
|
-
- tests/fixtures/fail14.json
|
68
|
-
- tests/fixtures/fail4.json
|
69
|
-
- tests/fixtures/fail7.json
|
69
|
+
- tests/test_json.rb
|
70
|
+
- tests/runner.rb
|
70
71
|
- tests/fixtures/fail10.json
|
71
|
-
- tests/fixtures/
|
72
|
-
- tests/fixtures/fail6.json
|
73
|
-
- tests/fixtures/fail21.json
|
74
|
-
- tests/fixtures/fail23.json
|
75
|
-
- tests/fixtures/fail3.json
|
76
|
-
- tests/fixtures/fail1.json
|
72
|
+
- tests/fixtures/fail20.json
|
77
73
|
- tests/fixtures/fail11.json
|
78
|
-
- tests/fixtures/
|
79
|
-
- tests/fixtures/pass1.json
|
74
|
+
- tests/fixtures/fail21.json
|
80
75
|
- tests/fixtures/fail12.json
|
76
|
+
- tests/fixtures/fail22.json
|
77
|
+
- tests/fixtures/fail13.json
|
78
|
+
- tests/fixtures/pass18.json
|
79
|
+
- tests/fixtures/fail23.json
|
80
|
+
- tests/fixtures/fail14.json
|
81
|
+
- tests/fixtures/fail24.json
|
81
82
|
- tests/fixtures/fail15.json
|
82
|
-
- tests/fixtures/
|
83
|
-
- tests/fixtures/
|
83
|
+
- tests/fixtures/fail16.json
|
84
|
+
- tests/fixtures/fail25.json
|
84
85
|
- tests/fixtures/fail17.json
|
86
|
+
- tests/fixtures/fail26.json
|
87
|
+
- tests/fixtures/fail27.json
|
85
88
|
- tests/fixtures/fail19.json
|
89
|
+
- tests/fixtures/fail28.json
|
90
|
+
- tests/fixtures/pass1.json
|
86
91
|
- tests/fixtures/pass2.json
|
92
|
+
- tests/fixtures/pass3.json
|
93
|
+
- tests/fixtures/fail1.json
|
87
94
|
- tests/fixtures/fail2.json
|
88
|
-
-
|
89
|
-
-
|
90
|
-
-
|
91
|
-
-
|
92
|
-
-
|
93
|
-
-
|
94
|
-
-
|
95
|
-
- ext/json/ext/generator/generator.c
|
96
|
-
- ext/json/ext/parser/parser.c
|
97
|
-
- ext/json/ext/parser/unicode.c
|
98
|
-
- ext/json/ext/parser/parser.rl
|
99
|
-
- ext/json/ext/parser/unicode.h
|
100
|
-
- ext/json/ext/parser/extconf.rb
|
101
|
-
- benchmarks/benchmark_generator.rb
|
102
|
-
- benchmarks/benchmark.txt
|
103
|
-
- benchmarks/benchmark_parser.rb
|
104
|
-
- benchmarks/benchmark_rails.rb
|
105
|
-
- data/example.json
|
106
|
-
- data/prototype.js
|
107
|
-
- data/index.html
|
95
|
+
- tests/fixtures/fail3.json
|
96
|
+
- tests/fixtures/fail4.json
|
97
|
+
- tests/fixtures/fail5.json
|
98
|
+
- tests/fixtures/fail6.json
|
99
|
+
- tests/fixtures/fail7.json
|
100
|
+
- tests/fixtures/fail8.json
|
101
|
+
- tests/fixtures/fail9.json
|
108
102
|
- lib/json
|
109
103
|
- lib/json.rb
|
110
|
-
- lib/json/FalseClass.xpm
|
111
|
-
- lib/json/TrueClass.xpm
|
112
|
-
- lib/json/ext.rb
|
113
|
-
- lib/json/common.rb
|
114
|
-
- lib/json/Hash.xpm
|
115
104
|
- lib/json/pure
|
116
|
-
- lib/json/Key.xpm
|
117
|
-
- lib/json/Numeric.xpm
|
118
105
|
- lib/json/Array.xpm
|
106
|
+
- lib/json/ext.rb
|
107
|
+
- lib/json/FalseClass.xpm
|
108
|
+
- lib/json/Numeric.xpm
|
109
|
+
- lib/json/Hash.xpm
|
110
|
+
- lib/json/version.rb
|
111
|
+
- lib/json/TrueClass.xpm
|
119
112
|
- lib/json/editor.rb
|
120
113
|
- lib/json/String.xpm
|
121
|
-
- lib/json/
|
114
|
+
- lib/json/common.rb
|
115
|
+
- lib/json/Key.xpm
|
122
116
|
- lib/json/NilClass.xpm
|
123
|
-
- lib/json/version.rb
|
124
117
|
- lib/json/json.xpm
|
125
|
-
- lib/json/pure
|
118
|
+
- lib/json/pure.rb
|
126
119
|
- lib/json/pure/generator.rb
|
127
|
-
-
|
128
|
-
-
|
120
|
+
- lib/json/pure/parser.rb
|
121
|
+
- bin/edit_json.rb
|
122
|
+
- bin/prettify_json.rb
|
123
|
+
- data/prototype.js
|
124
|
+
- data/example.json
|
125
|
+
- data/index.html
|
126
|
+
- benchmarks/benchmark_generator.rb
|
127
|
+
- benchmarks/benchmark_rails.rb
|
128
|
+
- benchmarks/benchmark.txt
|
129
|
+
- benchmarks/benchmark_parser.rb
|
129
130
|
test_files:
|
130
131
|
- tests/runner.rb
|
131
132
|
rdoc_options:
|