json 1.8.3 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of json might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.travis.yml +4 -10
- data/CHANGES +12 -0
- data/Gemfile +1 -2
- data/{README.rdoc → README.md} +145 -111
- data/Rakefile +26 -29
- data/VERSION +1 -1
- data/ext/json/ext/generator/generator.c +38 -55
- data/ext/json/ext/generator/generator.h +7 -1
- data/ext/json/ext/parser/extconf.rb +3 -0
- data/ext/json/ext/parser/parser.c +309 -439
- data/ext/json/ext/parser/parser.h +0 -1
- data/ext/json/ext/parser/parser.rl +67 -160
- data/ext/json/extconf.rb +0 -1
- data/java/src/json/ext/ByteListTranscoder.java +1 -2
- data/java/src/json/ext/Generator.java +11 -12
- data/java/src/json/ext/GeneratorMethods.java +1 -2
- data/java/src/json/ext/GeneratorService.java +1 -2
- data/java/src/json/ext/GeneratorState.java +3 -56
- data/java/src/json/ext/OptionsReader.java +2 -3
- data/java/src/json/ext/Parser.java +110 -411
- data/java/src/json/ext/Parser.rl +25 -119
- data/java/src/json/ext/ParserService.java +1 -2
- data/java/src/json/ext/RuntimeInfo.java +1 -6
- data/java/src/json/ext/StringDecoder.java +1 -2
- data/java/src/json/ext/StringEncoder.java +5 -0
- data/java/src/json/ext/Utils.java +1 -2
- data/json-java.gemspec +15 -0
- data/json.gemspec +0 -0
- data/json_pure.gemspec +23 -26
- data/lib/json/add/bigdecimal.rb +1 -0
- data/lib/json/add/complex.rb +2 -1
- data/lib/json/add/core.rb +1 -0
- data/lib/json/add/date.rb +1 -1
- data/lib/json/add/date_time.rb +1 -1
- data/lib/json/add/exception.rb +1 -1
- data/lib/json/add/ostruct.rb +1 -1
- data/lib/json/add/range.rb +1 -1
- data/lib/json/add/rational.rb +1 -0
- data/lib/json/add/regexp.rb +1 -1
- data/lib/json/add/struct.rb +1 -1
- data/lib/json/add/symbol.rb +1 -1
- data/lib/json/add/time.rb +1 -1
- data/lib/json/common.rb +24 -52
- data/lib/json/ext.rb +0 -6
- data/lib/json/generic_object.rb +5 -4
- data/lib/json/pure/generator.rb +61 -125
- data/lib/json/pure/parser.rb +28 -80
- data/lib/json/pure.rb +2 -8
- data/lib/json/version.rb +2 -1
- data/lib/json.rb +1 -0
- data/references/rfc7159.txt +899 -0
- data/tests/fixtures/obsolete_fail1.json +1 -0
- data/tests/{test_json_addition.rb → json_addition_test.rb} +22 -25
- data/tests/json_common_interface_test.rb +126 -0
- data/tests/json_encoding_test.rb +105 -0
- data/tests/json_ext_parser_test.rb +15 -0
- data/tests/{test_json_fixtures.rb → json_fixtures_test.rb} +5 -8
- data/tests/{test_json_generate.rb → json_generator_test.rb} +76 -37
- data/tests/{test_json_generic_object.rb → json_generic_object_test.rb} +15 -8
- data/tests/json_parser_test.rb +448 -0
- data/tests/json_string_matching_test.rb +38 -0
- data/tests/test_helper.rb +23 -0
- data/tools/diff.sh +18 -0
- data/tools/fuzz.rb +1 -9
- metadata +27 -42
- data/COPYING +0 -58
- data/COPYING-json-jruby +0 -57
- data/GPL +0 -340
- data/TODO +0 -1
- data/tests/fixtures/fail1.json +0 -1
- data/tests/setup_variant.rb +0 -11
- data/tests/test_json.rb +0 -553
- data/tests/test_json_encoding.rb +0 -65
- data/tests/test_json_string_matching.rb +0 -39
- data/tests/test_json_unicode.rb +0 -72
data/Rakefile
CHANGED
@@ -23,10 +23,6 @@ class UndocumentedTestTask < Rake::TestTask
|
|
23
23
|
def desc(*) end
|
24
24
|
end
|
25
25
|
|
26
|
-
def skip_sdoc(src)
|
27
|
-
src.gsub(/^.*sdoc.*/) { |s| s + ' if RUBY_VERSION > "1.8.6"' }
|
28
|
-
end
|
29
|
-
|
30
26
|
MAKE = ENV['MAKE'] || %w[gmake make].find { |c| system(c, '-v') }
|
31
27
|
BUNDLE = ENV['BUNDLE'] || %w[bundle].find { |c| system(c, '-v') }
|
32
28
|
PKG_NAME = 'json'
|
@@ -87,13 +83,12 @@ if defined?(Gem) and defined?(Gem::PackageTask)
|
|
87
83
|
s.files = PKG_FILES
|
88
84
|
|
89
85
|
s.require_path = 'lib'
|
90
|
-
s.add_development_dependency '
|
91
|
-
s.add_development_dependency '
|
92
|
-
s.add_development_dependency 'rake', '~>0.9.2'
|
86
|
+
s.add_development_dependency 'rake'
|
87
|
+
s.add_development_dependency 'test-unit', '~> 2.0'
|
93
88
|
|
94
|
-
s.extra_rdoc_files << 'README.
|
89
|
+
s.extra_rdoc_files << 'README.md'
|
95
90
|
s.rdoc_options <<
|
96
|
-
'--title' << 'JSON implemention for ruby' << '--main' << 'README.
|
91
|
+
'--title' << 'JSON implemention for ruby' << '--main' << 'README.md'
|
97
92
|
s.test_files.concat Dir['./tests/test_*.rb']
|
98
93
|
|
99
94
|
s.author = "Florian Frank"
|
@@ -105,7 +100,7 @@ if defined?(Gem) and defined?(Gem::PackageTask)
|
|
105
100
|
desc 'Creates a json_pure.gemspec file'
|
106
101
|
task :gemspec_pure => :version do
|
107
102
|
File.open('json_pure.gemspec', 'w') do |gemspec|
|
108
|
-
gemspec.write
|
103
|
+
gemspec.write spec_pure.to_ruby
|
109
104
|
end
|
110
105
|
end
|
111
106
|
|
@@ -125,24 +120,25 @@ if defined?(Gem) and defined?(Gem::PackageTask)
|
|
125
120
|
s.extensions = FileList['ext/**/extconf.rb']
|
126
121
|
|
127
122
|
s.require_path = 'lib'
|
128
|
-
s.add_development_dependency '
|
129
|
-
s.add_development_dependency '
|
123
|
+
s.add_development_dependency 'rake'
|
124
|
+
s.add_development_dependency 'test-unit', '~> 2.0'
|
130
125
|
|
131
|
-
s.extra_rdoc_files << 'README.
|
126
|
+
s.extra_rdoc_files << 'README.md'
|
132
127
|
s.rdoc_options <<
|
133
|
-
'--title' << 'JSON implemention for Ruby' << '--main' << 'README.
|
128
|
+
'--title' << 'JSON implemention for Ruby' << '--main' << 'README.md'
|
134
129
|
s.test_files.concat Dir['./tests/test_*.rb']
|
135
130
|
|
136
131
|
s.author = "Florian Frank"
|
137
132
|
s.email = "flori@ping.de"
|
138
133
|
s.homepage = "http://flori.github.com/#{PKG_NAME}"
|
139
134
|
s.license = 'Ruby'
|
135
|
+
s.required_ruby_version = '~> 2.0'
|
140
136
|
end
|
141
137
|
|
142
138
|
desc 'Creates a json.gemspec file'
|
143
139
|
task :gemspec_ext => :version do
|
144
140
|
File.open('json.gemspec', 'w') do |gemspec|
|
145
|
-
gemspec.write
|
141
|
+
gemspec.write spec_ext.to_ruby
|
146
142
|
end
|
147
143
|
end
|
148
144
|
|
@@ -161,6 +157,7 @@ task :version do
|
|
161
157
|
puts m
|
162
158
|
File.open(File.join('lib', 'json', 'version.rb'), 'w') do |v|
|
163
159
|
v.puts <<EOT
|
160
|
+
# frozen_string_literal: false
|
164
161
|
module JSON
|
165
162
|
# JSON version
|
166
163
|
VERSION = '#{PKG_VERSION}'
|
@@ -173,13 +170,17 @@ EOT
|
|
173
170
|
end
|
174
171
|
end
|
175
172
|
|
173
|
+
task :check_env do
|
174
|
+
ENV.key?('JSON') or fail "JSON env var is required"
|
175
|
+
end
|
176
|
+
|
176
177
|
desc "Testing library (pure ruby)"
|
177
|
-
task :test_pure => [ :clean, :do_test_pure ]
|
178
|
+
task :test_pure => [ :clean, :check_env, :do_test_pure ]
|
178
179
|
|
179
180
|
UndocumentedTestTask.new do |t|
|
180
181
|
t.name = 'do_test_pure'
|
181
|
-
t.libs << 'lib'
|
182
|
-
t.test_files = FileList['tests
|
182
|
+
t.libs << 'lib' << 'tests'
|
183
|
+
t.test_files = FileList['tests/*_test.rb']
|
183
184
|
t.verbose = true
|
184
185
|
t.options = '-v'
|
185
186
|
end
|
@@ -257,12 +258,12 @@ if defined?(RUBY_ENGINE) and RUBY_ENGINE == 'jruby'
|
|
257
258
|
end
|
258
259
|
|
259
260
|
desc "Testing library (jruby)"
|
260
|
-
task :test_ext => [ :create_jar, :do_test_ext ]
|
261
|
+
task :test_ext => [ :create_jar, :check_env, :do_test_ext ]
|
261
262
|
|
262
263
|
UndocumentedTestTask.new do |t|
|
263
264
|
t.name = 'do_test_ext'
|
264
|
-
t.libs << 'lib'
|
265
|
-
t.test_files = FileList['tests
|
265
|
+
t.libs << 'lib' << 'tests'
|
266
|
+
t.test_files = FileList['tests/*_test.rb']
|
266
267
|
t.verbose = true
|
267
268
|
t.options = '-v'
|
268
269
|
end
|
@@ -331,21 +332,16 @@ else
|
|
331
332
|
end
|
332
333
|
|
333
334
|
desc "Testing library (extension)"
|
334
|
-
task :test_ext => [ :compile, :do_test_ext ]
|
335
|
+
task :test_ext => [ :compile, :check_env, :do_test_ext ]
|
335
336
|
|
336
337
|
UndocumentedTestTask.new do |t|
|
337
338
|
t.name = 'do_test_ext'
|
338
|
-
t.libs << 'ext' << 'lib'
|
339
|
-
t.test_files = FileList['tests
|
339
|
+
t.libs << 'ext' << 'lib' << 'tests'
|
340
|
+
t.test_files = FileList['tests/*_test.rb']
|
340
341
|
t.verbose = true
|
341
342
|
t.options = '-v'
|
342
343
|
end
|
343
344
|
|
344
|
-
desc "Create RDOC documentation"
|
345
|
-
task :doc => [ :version, EXT_PARSER_SRC ] do
|
346
|
-
sh "sdoc -o doc -t '#{PKG_TITLE}' -m README.rdoc README.rdoc lib/json.rb #{FileList['lib/json/**/*.rb']} #{EXT_PARSER_SRC} #{EXT_GENERATOR_SRC}"
|
347
|
-
end
|
348
|
-
|
349
345
|
desc "Generate parser with ragel"
|
350
346
|
task :ragel => EXT_PARSER_SRC
|
351
347
|
|
@@ -367,6 +363,7 @@ else
|
|
367
363
|
sh "ragel -x parser.rl | #{RAGEL_CODEGEN} -G2"
|
368
364
|
end
|
369
365
|
src = File.read("parser.c").gsub(/[ \t]+$/, '')
|
366
|
+
src.gsub!(/^static const int (JSON_.*=.*);$/, 'enum {\1};')
|
370
367
|
File.open("parser.c", "w") {|f| f.print src}
|
371
368
|
end
|
372
369
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
2.0.0
|
@@ -7,14 +7,20 @@ static ID i_encoding, i_encode;
|
|
7
7
|
#endif
|
8
8
|
|
9
9
|
static VALUE mJSON, mExt, mGenerator, cState, mGeneratorMethods, mObject,
|
10
|
-
mHash, mArray,
|
10
|
+
mHash, mArray,
|
11
|
+
#ifdef RUBY_INTEGER_UNIFICATION
|
12
|
+
mInteger,
|
13
|
+
#else
|
14
|
+
mFixnum, mBignum,
|
15
|
+
#endif
|
16
|
+
mFloat, mString, mString_Extend,
|
11
17
|
mTrueClass, mFalseClass, mNilClass, eGeneratorError,
|
12
18
|
eNestingError, CRegexp_MULTILINE, CJSON_SAFE_STATE_PROTOTYPE,
|
13
19
|
i_SAFE_STATE_PROTOTYPE;
|
14
20
|
|
15
21
|
static ID i_to_s, i_to_json, i_new, i_indent, i_space, i_space_before,
|
16
22
|
i_object_nl, i_array_nl, i_max_nesting, i_allow_nan, i_ascii_only,
|
17
|
-
|
23
|
+
i_pack, i_unpack, i_create_id, i_extend, i_key_p,
|
18
24
|
i_aref, i_send, i_respond_to_p, i_match, i_keys, i_depth,
|
19
25
|
i_buffer_initial_length, i_dup;
|
20
26
|
|
@@ -342,6 +348,18 @@ static VALUE mArray_to_json(int argc, VALUE *argv, VALUE self) {
|
|
342
348
|
GENERATE_JSON(array);
|
343
349
|
}
|
344
350
|
|
351
|
+
#ifdef RUBY_INTEGER_UNIFICATION
|
352
|
+
/*
|
353
|
+
* call-seq: to_json(*)
|
354
|
+
*
|
355
|
+
* Returns a JSON string representation for this Integer number.
|
356
|
+
*/
|
357
|
+
static VALUE mInteger_to_json(int argc, VALUE *argv, VALUE self)
|
358
|
+
{
|
359
|
+
GENERATE_JSON(integer);
|
360
|
+
}
|
361
|
+
|
362
|
+
#else
|
345
363
|
/*
|
346
364
|
* call-seq: to_json(*)
|
347
365
|
*
|
@@ -361,6 +379,7 @@ static VALUE mBignum_to_json(int argc, VALUE *argv, VALUE self)
|
|
361
379
|
{
|
362
380
|
GENERATE_JSON(bignum);
|
363
381
|
}
|
382
|
+
#endif
|
364
383
|
|
365
384
|
/*
|
366
385
|
* call-seq: to_json(*)
|
@@ -622,8 +641,6 @@ static VALUE cState_configure(VALUE self, VALUE opts)
|
|
622
641
|
state->allow_nan = RTEST(tmp);
|
623
642
|
tmp = rb_hash_aref(opts, ID2SYM(i_ascii_only));
|
624
643
|
state->ascii_only = RTEST(tmp);
|
625
|
-
tmp = rb_hash_aref(opts, ID2SYM(i_quirks_mode));
|
626
|
-
state->quirks_mode = RTEST(tmp);
|
627
644
|
return self;
|
628
645
|
}
|
629
646
|
|
@@ -657,7 +674,6 @@ static VALUE cState_to_h(VALUE self)
|
|
657
674
|
rb_hash_aset(result, ID2SYM(i_array_nl), rb_str_new(state->array_nl, state->array_nl_len));
|
658
675
|
rb_hash_aset(result, ID2SYM(i_allow_nan), state->allow_nan ? Qtrue : Qfalse);
|
659
676
|
rb_hash_aset(result, ID2SYM(i_ascii_only), state->ascii_only ? Qtrue : Qfalse);
|
660
|
-
rb_hash_aset(result, ID2SYM(i_quirks_mode), state->quirks_mode ? Qtrue : Qfalse);
|
661
677
|
rb_hash_aset(result, ID2SYM(i_max_nesting), LONG2FIX(state->max_nesting));
|
662
678
|
rb_hash_aset(result, ID2SYM(i_depth), LONG2FIX(state->depth));
|
663
679
|
rb_hash_aset(result, ID2SYM(i_buffer_initial_length), LONG2FIX(state->buffer_initial_length));
|
@@ -825,6 +841,15 @@ static void generate_json_bignum(FBuffer *buffer, VALUE Vstate, JSON_Generator_S
|
|
825
841
|
fbuffer_append_str(buffer, tmp);
|
826
842
|
}
|
827
843
|
|
844
|
+
#ifdef RUBY_INTEGER_UNIFICATION
|
845
|
+
static void generate_json_integer(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj)
|
846
|
+
{
|
847
|
+
if (FIXNUM_P(obj))
|
848
|
+
generate_json_fixnum(buffer, Vstate, state, obj);
|
849
|
+
else
|
850
|
+
generate_json_bignum(buffer, Vstate, state, obj);
|
851
|
+
}
|
852
|
+
#endif
|
828
853
|
static void generate_json_float(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj)
|
829
854
|
{
|
830
855
|
double value = RFLOAT_VALUE(obj);
|
@@ -858,9 +883,9 @@ static void generate_json(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *s
|
|
858
883
|
generate_json_false(buffer, Vstate, state, obj);
|
859
884
|
} else if (obj == Qtrue) {
|
860
885
|
generate_json_true(buffer, Vstate, state, obj);
|
861
|
-
} else if (
|
886
|
+
} else if (FIXNUM_P(obj)) {
|
862
887
|
generate_json_fixnum(buffer, Vstate, state, obj);
|
863
|
-
} else if (
|
888
|
+
} else if (RB_TYPE_P(obj, T_BIGNUM)) {
|
864
889
|
generate_json_bignum(buffer, Vstate, state, obj);
|
865
890
|
} else if (klass == rb_cFloat) {
|
866
891
|
generate_json_float(buffer, Vstate, state, obj);
|
@@ -871,7 +896,7 @@ static void generate_json(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *s
|
|
871
896
|
} else {
|
872
897
|
tmp = rb_funcall(obj, i_to_s, 0);
|
873
898
|
Check_Type(tmp, T_STRING);
|
874
|
-
|
899
|
+
generate_json_string(buffer, Vstate, state, tmp);
|
875
900
|
}
|
876
901
|
}
|
877
902
|
|
@@ -914,21 +939,6 @@ static VALUE cState_partial_generate(VALUE self, VALUE obj)
|
|
914
939
|
return fbuffer_to_s(buffer);
|
915
940
|
}
|
916
941
|
|
917
|
-
/*
|
918
|
-
* This function returns true if string is either a JSON array or JSON object.
|
919
|
-
* It might suffer from false positives, e. g. syntactically incorrect JSON in
|
920
|
-
* the string or certain UTF-8 characters on the right hand side.
|
921
|
-
*/
|
922
|
-
static int isArrayOrObject(VALUE string)
|
923
|
-
{
|
924
|
-
long string_len = RSTRING_LEN(string);
|
925
|
-
char *p = RSTRING_PTR(string), *q = p + string_len - 1;
|
926
|
-
if (string_len < 2) return 0;
|
927
|
-
for (; p < q && isspace((unsigned char)*p); p++);
|
928
|
-
for (; q > p && isspace((unsigned char)*q); q--);
|
929
|
-
return (*p == '[' && *q == ']') || (*p == '{' && *q == '}');
|
930
|
-
}
|
931
|
-
|
932
942
|
/*
|
933
943
|
* call-seq: generate(obj)
|
934
944
|
*
|
@@ -940,9 +950,6 @@ static VALUE cState_generate(VALUE self, VALUE obj)
|
|
940
950
|
{
|
941
951
|
VALUE result = cState_partial_generate(self, obj);
|
942
952
|
GET_STATE(self);
|
943
|
-
if (!state->quirks_mode && !isArrayOrObject(result)) {
|
944
|
-
rb_raise(eGeneratorError, "only generation of JSON objects or arrays allowed");
|
945
|
-
}
|
946
953
|
return result;
|
947
954
|
}
|
948
955
|
|
@@ -961,8 +968,6 @@ static VALUE cState_generate(VALUE self, VALUE obj)
|
|
961
968
|
* * *allow_nan*: true if NaN, Infinity, and -Infinity should be
|
962
969
|
* generated, otherwise an exception is thrown, if these values are
|
963
970
|
* encountered. This options defaults to false.
|
964
|
-
* * *quirks_mode*: Enables quirks_mode for parser, that is for example
|
965
|
-
* generating single JSON values instead of documents is possible.
|
966
971
|
* * *buffer_initial_length*: sets the initial length of the generator's
|
967
972
|
* internal buffer.
|
968
973
|
*/
|
@@ -1269,29 +1274,6 @@ static VALUE cState_ascii_only_p(VALUE self)
|
|
1269
1274
|
return state->ascii_only ? Qtrue : Qfalse;
|
1270
1275
|
}
|
1271
1276
|
|
1272
|
-
/*
|
1273
|
-
* call-seq: quirks_mode?
|
1274
|
-
*
|
1275
|
-
* Returns true, if quirks mode is enabled. Otherwise returns false.
|
1276
|
-
*/
|
1277
|
-
static VALUE cState_quirks_mode_p(VALUE self)
|
1278
|
-
{
|
1279
|
-
GET_STATE(self);
|
1280
|
-
return state->quirks_mode ? Qtrue : Qfalse;
|
1281
|
-
}
|
1282
|
-
|
1283
|
-
/*
|
1284
|
-
* call-seq: quirks_mode=(enable)
|
1285
|
-
*
|
1286
|
-
* If set to true, enables the quirks_mode mode.
|
1287
|
-
*/
|
1288
|
-
static VALUE cState_quirks_mode_set(VALUE self, VALUE enable)
|
1289
|
-
{
|
1290
|
-
GET_STATE(self);
|
1291
|
-
state->quirks_mode = RTEST(enable);
|
1292
|
-
return Qnil;
|
1293
|
-
}
|
1294
|
-
|
1295
1277
|
/*
|
1296
1278
|
* call-seq: depth
|
1297
1279
|
*
|
@@ -1380,9 +1362,6 @@ void Init_generator(void)
|
|
1380
1362
|
rb_define_method(cState, "check_circular?", cState_check_circular_p, 0);
|
1381
1363
|
rb_define_method(cState, "allow_nan?", cState_allow_nan_p, 0);
|
1382
1364
|
rb_define_method(cState, "ascii_only?", cState_ascii_only_p, 0);
|
1383
|
-
rb_define_method(cState, "quirks_mode?", cState_quirks_mode_p, 0);
|
1384
|
-
rb_define_method(cState, "quirks_mode", cState_quirks_mode_p, 0);
|
1385
|
-
rb_define_method(cState, "quirks_mode=", cState_quirks_mode_set, 1);
|
1386
1365
|
rb_define_method(cState, "depth", cState_depth, 0);
|
1387
1366
|
rb_define_method(cState, "depth=", cState_depth_set, 1);
|
1388
1367
|
rb_define_method(cState, "buffer_initial_length", cState_buffer_initial_length, 0);
|
@@ -1402,10 +1381,15 @@ void Init_generator(void)
|
|
1402
1381
|
rb_define_method(mHash, "to_json", mHash_to_json, -1);
|
1403
1382
|
mArray = rb_define_module_under(mGeneratorMethods, "Array");
|
1404
1383
|
rb_define_method(mArray, "to_json", mArray_to_json, -1);
|
1384
|
+
#ifdef RUBY_INTEGER_UNIFICATION
|
1385
|
+
mInteger = rb_define_module_under(mGeneratorMethods, "Integer");
|
1386
|
+
rb_define_method(mInteger, "to_json", mInteger_to_json, -1);
|
1387
|
+
#else
|
1405
1388
|
mFixnum = rb_define_module_under(mGeneratorMethods, "Fixnum");
|
1406
1389
|
rb_define_method(mFixnum, "to_json", mFixnum_to_json, -1);
|
1407
1390
|
mBignum = rb_define_module_under(mGeneratorMethods, "Bignum");
|
1408
1391
|
rb_define_method(mBignum, "to_json", mBignum_to_json, -1);
|
1392
|
+
#endif
|
1409
1393
|
mFloat = rb_define_module_under(mGeneratorMethods, "Float");
|
1410
1394
|
rb_define_method(mFloat, "to_json", mFloat_to_json, -1);
|
1411
1395
|
mString = rb_define_module_under(mGeneratorMethods, "String");
|
@@ -1434,7 +1418,6 @@ void Init_generator(void)
|
|
1434
1418
|
i_max_nesting = rb_intern("max_nesting");
|
1435
1419
|
i_allow_nan = rb_intern("allow_nan");
|
1436
1420
|
i_ascii_only = rb_intern("ascii_only");
|
1437
|
-
i_quirks_mode = rb_intern("quirks_mode");
|
1438
1421
|
i_depth = rb_intern("depth");
|
1439
1422
|
i_buffer_initial_length = rb_intern("buffer_initial_length");
|
1440
1423
|
i_pack = rb_intern("pack");
|
@@ -73,7 +73,6 @@ typedef struct JSON_Generator_StateStruct {
|
|
73
73
|
long max_nesting;
|
74
74
|
char allow_nan;
|
75
75
|
char ascii_only;
|
76
|
-
char quirks_mode;
|
77
76
|
long depth;
|
78
77
|
long buffer_initial_length;
|
79
78
|
} JSON_Generator_State;
|
@@ -99,8 +98,12 @@ typedef struct JSON_Generator_StateStruct {
|
|
99
98
|
|
100
99
|
static VALUE mHash_to_json(int argc, VALUE *argv, VALUE self);
|
101
100
|
static VALUE mArray_to_json(int argc, VALUE *argv, VALUE self);
|
101
|
+
#ifdef RUBY_INTEGER_UNIFICATION
|
102
|
+
static VALUE mInteger_to_json(int argc, VALUE *argv, VALUE self);
|
103
|
+
#else
|
102
104
|
static VALUE mFixnum_to_json(int argc, VALUE *argv, VALUE self);
|
103
105
|
static VALUE mBignum_to_json(int argc, VALUE *argv, VALUE self);
|
106
|
+
#endif
|
104
107
|
static VALUE mFloat_to_json(int argc, VALUE *argv, VALUE self);
|
105
108
|
static VALUE mString_included_s(VALUE self, VALUE modul);
|
106
109
|
static VALUE mString_to_json(int argc, VALUE *argv, VALUE self);
|
@@ -122,6 +125,9 @@ static void generate_json_string(FBuffer *buffer, VALUE Vstate, JSON_Generator_S
|
|
122
125
|
static void generate_json_null(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj);
|
123
126
|
static void generate_json_false(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj);
|
124
127
|
static void generate_json_true(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj);
|
128
|
+
#ifdef RUBY_INTEGER_UNIFICATION
|
129
|
+
static void generate_json_integer(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj);
|
130
|
+
#endif
|
125
131
|
static void generate_json_fixnum(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj);
|
126
132
|
static void generate_json_bignum(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj);
|
127
133
|
static void generate_json_float(FBuffer *buffer, VALUE Vstate, JSON_Generator_State *state, VALUE obj);
|