json 1.8.3 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.gitignore +2 -0
- data/.travis.yml +9 -11
- data/{CHANGES → CHANGES.md} +186 -90
- data/Gemfile +10 -6
- data/{COPYING-json-jruby → LICENSE} +5 -6
- data/{README-json-jruby.markdown → README-json-jruby.md} +0 -0
- data/{README.rdoc → README.md} +185 -134
- data/Rakefile +41 -40
- data/VERSION +1 -1
- data/ext/json/ext/fbuffer/fbuffer.h +0 -3
- data/ext/json/ext/generator/generator.c +142 -101
- data/ext/json/ext/generator/generator.h +7 -2
- data/ext/json/ext/parser/extconf.rb +3 -0
- data/ext/json/ext/parser/parser.c +383 -463
- data/ext/json/ext/parser/parser.h +4 -5
- data/ext/json/ext/parser/parser.rl +141 -184
- data/ext/json/extconf.rb +0 -1
- data/java/src/json/ext/ByteListTranscoder.java +1 -2
- data/java/src/json/ext/Generator.java +44 -22
- 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 +132 -415
- data/java/src/json/ext/Parser.rl +48 -124
- 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 +16 -2
- data/json.gemspec +0 -0
- data/json_pure.gemspec +24 -26
- data/lib/json/add/bigdecimal.rb +3 -2
- data/lib/json/add/complex.rb +4 -3
- 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 +3 -3
- data/lib/json/add/range.rb +1 -1
- data/lib/json/add/rational.rb +3 -2
- data/lib/json/add/regexp.rb +3 -3
- data/lib/json/add/set.rb +29 -0
- 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 +26 -54
- data/lib/json/ext.rb +0 -6
- data/lib/json/generic_object.rb +5 -4
- data/lib/json/pure/generator.rb +63 -126
- data/lib/json/pure/parser.rb +41 -81
- 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} +32 -25
- data/tests/json_common_interface_test.rb +126 -0
- data/tests/json_encoding_test.rb +107 -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} +123 -39
- data/tests/{test_json_generic_object.rb → json_generic_object_test.rb} +15 -8
- data/tests/json_parser_test.rb +472 -0
- data/tests/json_string_matching_test.rb +38 -0
- data/tests/{setup_variant.rb → test_helper.rb} +6 -0
- data/tools/diff.sh +18 -0
- data/tools/fuzz.rb +1 -9
- metadata +30 -47
- data/COPYING +0 -58
- data/GPL +0 -340
- data/TODO +0 -1
- data/data/example.json +0 -1
- data/data/index.html +0 -38
- data/data/prototype.js +0 -4184
- data/tests/fixtures/fail1.json +0 -1
- 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,12 +23,13 @@ class UndocumentedTestTask < Rake::TestTask
|
|
23
23
|
def desc(*) end
|
24
24
|
end
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
|
26
|
+
which = lambda { |c|
|
27
|
+
w = `which #{c}`
|
28
|
+
break w.chomp unless w.empty?
|
29
|
+
}
|
29
30
|
|
30
|
-
MAKE = ENV['MAKE'] || %w[gmake make].find
|
31
|
-
BUNDLE = ENV['BUNDLE'] || %w[bundle].find
|
31
|
+
MAKE = ENV['MAKE'] || %w[gmake make].find(&which)
|
32
|
+
BUNDLE = ENV['BUNDLE'] || %w[bundle].find(&which)
|
32
33
|
PKG_NAME = 'json'
|
33
34
|
PKG_TITLE = 'JSON Implementation for Ruby'
|
34
35
|
PKG_VERSION = File.read('VERSION').chomp
|
@@ -51,8 +52,8 @@ JAVA_CLASSES = []
|
|
51
52
|
JRUBY_PARSER_JAR = File.expand_path("lib/json/ext/parser.jar")
|
52
53
|
JRUBY_GENERATOR_JAR = File.expand_path("lib/json/ext/generator.jar")
|
53
54
|
|
54
|
-
RAGEL_CODEGEN = %w[rlcodegen rlgen-cd ragel].find
|
55
|
-
RAGEL_DOTGEN = %w[rlgen-dot rlgen-cd ragel].find
|
55
|
+
RAGEL_CODEGEN = %w[rlcodegen rlgen-cd ragel].find(&which)
|
56
|
+
RAGEL_DOTGEN = %w[rlgen-dot rlgen-cd ragel].find(&which)
|
56
57
|
|
57
58
|
desc "Installing library (pure)"
|
58
59
|
task :install_pure => :version do
|
@@ -87,25 +88,25 @@ if defined?(Gem) and defined?(Gem::PackageTask)
|
|
87
88
|
s.files = PKG_FILES
|
88
89
|
|
89
90
|
s.require_path = 'lib'
|
90
|
-
s.add_development_dependency '
|
91
|
-
s.add_development_dependency '
|
92
|
-
s.add_development_dependency 'rake', '~>0.9.2'
|
91
|
+
s.add_development_dependency 'rake'
|
92
|
+
s.add_development_dependency 'test-unit', '~> 2.0'
|
93
93
|
|
94
|
-
s.extra_rdoc_files << 'README.
|
94
|
+
s.extra_rdoc_files << 'README.md'
|
95
95
|
s.rdoc_options <<
|
96
|
-
'--title' << 'JSON implemention for ruby' << '--main' << 'README.
|
96
|
+
'--title' << 'JSON implemention for ruby' << '--main' << 'README.md'
|
97
97
|
s.test_files.concat Dir['./tests/test_*.rb']
|
98
98
|
|
99
99
|
s.author = "Florian Frank"
|
100
100
|
s.email = "flori@ping.de"
|
101
101
|
s.homepage = "http://flori.github.com/#{PKG_NAME}"
|
102
102
|
s.license = 'Ruby'
|
103
|
+
s.required_ruby_version = '>= 1.9'
|
103
104
|
end
|
104
105
|
|
105
106
|
desc 'Creates a json_pure.gemspec file'
|
106
107
|
task :gemspec_pure => :version do
|
107
108
|
File.open('json_pure.gemspec', 'w') do |gemspec|
|
108
|
-
gemspec.write
|
109
|
+
gemspec.write spec_pure.to_ruby
|
109
110
|
end
|
110
111
|
end
|
111
112
|
|
@@ -125,24 +126,25 @@ if defined?(Gem) and defined?(Gem::PackageTask)
|
|
125
126
|
s.extensions = FileList['ext/**/extconf.rb']
|
126
127
|
|
127
128
|
s.require_path = 'lib'
|
128
|
-
s.add_development_dependency '
|
129
|
-
s.add_development_dependency '
|
129
|
+
s.add_development_dependency 'rake'
|
130
|
+
s.add_development_dependency 'test-unit', '~> 2.0'
|
130
131
|
|
131
|
-
s.extra_rdoc_files << 'README.
|
132
|
+
s.extra_rdoc_files << 'README.md'
|
132
133
|
s.rdoc_options <<
|
133
|
-
'--title' << 'JSON implemention for Ruby' << '--main' << 'README.
|
134
|
+
'--title' << 'JSON implemention for Ruby' << '--main' << 'README.md'
|
134
135
|
s.test_files.concat Dir['./tests/test_*.rb']
|
135
136
|
|
136
137
|
s.author = "Florian Frank"
|
137
138
|
s.email = "flori@ping.de"
|
138
139
|
s.homepage = "http://flori.github.com/#{PKG_NAME}"
|
139
140
|
s.license = 'Ruby'
|
141
|
+
s.required_ruby_version = '>= 1.9'
|
140
142
|
end
|
141
143
|
|
142
144
|
desc 'Creates a json.gemspec file'
|
143
145
|
task :gemspec_ext => :version do
|
144
146
|
File.open('json.gemspec', 'w') do |gemspec|
|
145
|
-
gemspec.write
|
147
|
+
gemspec.write spec_ext.to_ruby
|
146
148
|
end
|
147
149
|
end
|
148
150
|
|
@@ -161,6 +163,7 @@ task :version do
|
|
161
163
|
puts m
|
162
164
|
File.open(File.join('lib', 'json', 'version.rb'), 'w') do |v|
|
163
165
|
v.puts <<EOT
|
166
|
+
# frozen_string_literal: false
|
164
167
|
module JSON
|
165
168
|
# JSON version
|
166
169
|
VERSION = '#{PKG_VERSION}'
|
@@ -173,13 +176,17 @@ EOT
|
|
173
176
|
end
|
174
177
|
end
|
175
178
|
|
179
|
+
task :check_env do
|
180
|
+
ENV.key?('JSON') or fail "JSON env var is required"
|
181
|
+
end
|
182
|
+
|
176
183
|
desc "Testing library (pure ruby)"
|
177
|
-
task :test_pure => [ :clean, :do_test_pure ]
|
184
|
+
task :test_pure => [ :clean, :check_env, :do_test_pure ]
|
178
185
|
|
179
186
|
UndocumentedTestTask.new do |t|
|
180
187
|
t.name = 'do_test_pure'
|
181
|
-
t.libs << 'lib'
|
182
|
-
t.test_files = FileList['tests
|
188
|
+
t.libs << 'lib' << 'tests'
|
189
|
+
t.test_files = FileList['tests/*_test.rb']
|
183
190
|
t.verbose = true
|
184
191
|
t.options = '-v'
|
185
192
|
end
|
@@ -198,13 +205,11 @@ namespace :gems do
|
|
198
205
|
end
|
199
206
|
|
200
207
|
if defined?(RUBY_ENGINE) and RUBY_ENGINE == 'jruby'
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
ENV['JAVA_HOME'] = local_java
|
207
|
-
end
|
208
|
+
ENV['JAVA_HOME'] ||= [
|
209
|
+
'/usr/local/java/jdk',
|
210
|
+
'/usr/lib/jvm/java-6-openjdk',
|
211
|
+
'/Library/Java/Home',
|
212
|
+
].find { |c| File.directory?(c) }
|
208
213
|
if ENV['JAVA_HOME']
|
209
214
|
warn " *** JAVA_HOME is set to #{ENV['JAVA_HOME'].inspect}"
|
210
215
|
ENV['PATH'] = ENV['PATH'].split(/:/).unshift(java_path = "#{ENV['JAVA_HOME']}/bin") * ':'
|
@@ -238,7 +243,7 @@ if defined?(RUBY_ENGINE) and RUBY_ENGINE == 'jruby'
|
|
238
243
|
classpath = (Dir['java/lib/*.jar'] << 'java/src' << JRUBY_JAR) * ':'
|
239
244
|
obj = src.sub(/\.java\Z/, '.class')
|
240
245
|
file obj => src do
|
241
|
-
sh 'javac', '-classpath', classpath, '-source', '1.
|
246
|
+
sh 'javac', '-classpath', classpath, '-source', '1.6', '-target', '1.6', src
|
242
247
|
end
|
243
248
|
JAVA_CLASSES << obj
|
244
249
|
end
|
@@ -257,12 +262,12 @@ if defined?(RUBY_ENGINE) and RUBY_ENGINE == 'jruby'
|
|
257
262
|
end
|
258
263
|
|
259
264
|
desc "Testing library (jruby)"
|
260
|
-
task :test_ext => [ :create_jar, :do_test_ext ]
|
265
|
+
task :test_ext => [ :check_env, :create_jar, :do_test_ext ]
|
261
266
|
|
262
267
|
UndocumentedTestTask.new do |t|
|
263
268
|
t.name = 'do_test_ext'
|
264
|
-
t.libs << 'lib'
|
265
|
-
t.test_files = FileList['tests
|
269
|
+
t.libs << 'lib' << 'tests'
|
270
|
+
t.test_files = FileList['tests/*_test.rb']
|
266
271
|
t.verbose = true
|
267
272
|
t.options = '-v'
|
268
273
|
end
|
@@ -331,21 +336,16 @@ else
|
|
331
336
|
end
|
332
337
|
|
333
338
|
desc "Testing library (extension)"
|
334
|
-
task :test_ext => [ :compile, :do_test_ext ]
|
339
|
+
task :test_ext => [ :check_env, :compile, :do_test_ext ]
|
335
340
|
|
336
341
|
UndocumentedTestTask.new do |t|
|
337
342
|
t.name = 'do_test_ext'
|
338
|
-
t.libs << 'ext' << 'lib'
|
339
|
-
t.test_files = FileList['tests
|
343
|
+
t.libs << 'ext' << 'lib' << 'tests'
|
344
|
+
t.test_files = FileList['tests/*_test.rb']
|
340
345
|
t.verbose = true
|
341
346
|
t.options = '-v'
|
342
347
|
end
|
343
348
|
|
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
349
|
desc "Generate parser with ragel"
|
350
350
|
task :ragel => EXT_PARSER_SRC
|
351
351
|
|
@@ -367,6 +367,7 @@ else
|
|
367
367
|
sh "ragel -x parser.rl | #{RAGEL_CODEGEN} -G2"
|
368
368
|
end
|
369
369
|
src = File.read("parser.c").gsub(/[ \t]+$/, '')
|
370
|
+
src.gsub!(/^static const int (JSON_.*=.*);$/, 'enum {\1};')
|
370
371
|
File.open("parser.c", "w") {|f| f.print src}
|
371
372
|
end
|
372
373
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
2.3.0
|