json 2.1.0 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGES.md +63 -5
  3. data/LICENSE +56 -0
  4. data/README.md +56 -23
  5. data/VERSION +1 -1
  6. data/ext/json/ext/generator/generator.c +223 -58
  7. data/ext/json/ext/generator/generator.h +5 -2
  8. data/ext/json/ext/parser/extconf.rb +26 -0
  9. data/ext/json/ext/parser/parser.c +2973 -1744
  10. data/ext/json/ext/parser/parser.h +6 -1
  11. data/ext/json/ext/parser/parser.rl +130 -22
  12. data/ext/json/extconf.rb +1 -0
  13. data/json.gemspec +0 -0
  14. data/lib/json/add/bigdecimal.rb +2 -2
  15. data/lib/json/add/complex.rb +2 -3
  16. data/lib/json/add/ostruct.rb +1 -1
  17. data/lib/json/add/rational.rb +2 -3
  18. data/lib/json/add/regexp.rb +2 -2
  19. data/lib/json/add/set.rb +29 -0
  20. data/lib/json/common.rb +372 -125
  21. data/lib/json/pure/generator.rb +31 -10
  22. data/lib/json/pure/parser.rb +32 -6
  23. data/lib/json/version.rb +1 -1
  24. data/lib/json.rb +549 -29
  25. metadata +19 -113
  26. data/.gitignore +0 -17
  27. data/.travis.yml +0 -19
  28. data/Gemfile +0 -16
  29. data/README-json-jruby.md +0 -33
  30. data/Rakefile +0 -408
  31. data/data/example.json +0 -1
  32. data/data/index.html +0 -38
  33. data/data/prototype.js +0 -4184
  34. data/diagrams/.keep +0 -0
  35. data/install.rb +0 -23
  36. data/java/src/json/ext/ByteListTranscoder.java +0 -166
  37. data/java/src/json/ext/Generator.java +0 -443
  38. data/java/src/json/ext/GeneratorMethods.java +0 -231
  39. data/java/src/json/ext/GeneratorService.java +0 -42
  40. data/java/src/json/ext/GeneratorState.java +0 -490
  41. data/java/src/json/ext/OptionsReader.java +0 -113
  42. data/java/src/json/ext/Parser.java +0 -2362
  43. data/java/src/json/ext/Parser.rl +0 -893
  44. data/java/src/json/ext/ParserService.java +0 -34
  45. data/java/src/json/ext/RuntimeInfo.java +0 -116
  46. data/java/src/json/ext/StringDecoder.java +0 -166
  47. data/java/src/json/ext/StringEncoder.java +0 -111
  48. data/java/src/json/ext/Utils.java +0 -88
  49. data/json-java.gemspec +0 -38
  50. data/json_pure.gemspec +0 -38
  51. data/lib/json/ext/.keep +0 -0
  52. data/references/rfc7159.txt +0 -899
  53. data/tests/fixtures/fail10.json +0 -1
  54. data/tests/fixtures/fail11.json +0 -1
  55. data/tests/fixtures/fail12.json +0 -1
  56. data/tests/fixtures/fail13.json +0 -1
  57. data/tests/fixtures/fail14.json +0 -1
  58. data/tests/fixtures/fail18.json +0 -1
  59. data/tests/fixtures/fail19.json +0 -1
  60. data/tests/fixtures/fail2.json +0 -1
  61. data/tests/fixtures/fail20.json +0 -1
  62. data/tests/fixtures/fail21.json +0 -1
  63. data/tests/fixtures/fail22.json +0 -1
  64. data/tests/fixtures/fail23.json +0 -1
  65. data/tests/fixtures/fail24.json +0 -1
  66. data/tests/fixtures/fail25.json +0 -1
  67. data/tests/fixtures/fail27.json +0 -2
  68. data/tests/fixtures/fail28.json +0 -2
  69. data/tests/fixtures/fail3.json +0 -1
  70. data/tests/fixtures/fail4.json +0 -1
  71. data/tests/fixtures/fail5.json +0 -1
  72. data/tests/fixtures/fail6.json +0 -1
  73. data/tests/fixtures/fail7.json +0 -1
  74. data/tests/fixtures/fail8.json +0 -1
  75. data/tests/fixtures/fail9.json +0 -1
  76. data/tests/fixtures/obsolete_fail1.json +0 -1
  77. data/tests/fixtures/pass1.json +0 -56
  78. data/tests/fixtures/pass15.json +0 -1
  79. data/tests/fixtures/pass16.json +0 -1
  80. data/tests/fixtures/pass17.json +0 -1
  81. data/tests/fixtures/pass2.json +0 -1
  82. data/tests/fixtures/pass26.json +0 -1
  83. data/tests/fixtures/pass3.json +0 -6
  84. data/tests/json_addition_test.rb +0 -193
  85. data/tests/json_common_interface_test.rb +0 -126
  86. data/tests/json_encoding_test.rb +0 -107
  87. data/tests/json_ext_parser_test.rb +0 -15
  88. data/tests/json_fixtures_test.rb +0 -32
  89. data/tests/json_generator_test.rb +0 -377
  90. data/tests/json_generic_object_test.rb +0 -82
  91. data/tests/json_parser_test.rb +0 -471
  92. data/tests/json_string_matching_test.rb +0 -38
  93. data/tests/test_helper.rb +0 -21
  94. data/tools/diff.sh +0 -18
  95. data/tools/fuzz.rb +0 -131
  96. data/tools/server.rb +0 -62
metadata CHANGED
@@ -1,43 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: json
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Frank
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-18 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: rake
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: test-unit
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '2.0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '2.0'
11
+ date: 2021-10-14 00:00:00.000000000 Z
12
+ dependencies: []
41
13
  description: This is a JSON implementation as a Ruby extension in C.
42
14
  email: flori@ping.de
43
15
  executables: []
@@ -48,19 +20,10 @@ extensions:
48
20
  extra_rdoc_files:
49
21
  - README.md
50
22
  files:
51
- - "./tests/test_helper.rb"
52
- - ".gitignore"
53
- - ".travis.yml"
54
23
  - CHANGES.md
55
- - Gemfile
56
- - README-json-jruby.md
24
+ - LICENSE
57
25
  - README.md
58
- - Rakefile
59
26
  - VERSION
60
- - data/example.json
61
- - data/index.html
62
- - data/prototype.js
63
- - diagrams/.keep
64
27
  - ext/json/ext/fbuffer/fbuffer.h
65
28
  - ext/json/ext/generator/depend
66
29
  - ext/json/ext/generator/extconf.rb
@@ -72,23 +35,7 @@ files:
72
35
  - ext/json/ext/parser/parser.h
73
36
  - ext/json/ext/parser/parser.rl
74
37
  - ext/json/extconf.rb
75
- - install.rb
76
- - java/src/json/ext/ByteListTranscoder.java
77
- - java/src/json/ext/Generator.java
78
- - java/src/json/ext/GeneratorMethods.java
79
- - java/src/json/ext/GeneratorService.java
80
- - java/src/json/ext/GeneratorState.java
81
- - java/src/json/ext/OptionsReader.java
82
- - java/src/json/ext/Parser.java
83
- - java/src/json/ext/Parser.rl
84
- - java/src/json/ext/ParserService.java
85
- - java/src/json/ext/RuntimeInfo.java
86
- - java/src/json/ext/StringDecoder.java
87
- - java/src/json/ext/StringEncoder.java
88
- - java/src/json/ext/Utils.java
89
- - json-java.gemspec
90
38
  - json.gemspec
91
- - json_pure.gemspec
92
39
  - lib/json.rb
93
40
  - lib/json/add/bigdecimal.rb
94
41
  - lib/json/add/complex.rb
@@ -100,70 +47,31 @@ files:
100
47
  - lib/json/add/range.rb
101
48
  - lib/json/add/rational.rb
102
49
  - lib/json/add/regexp.rb
50
+ - lib/json/add/set.rb
103
51
  - lib/json/add/struct.rb
104
52
  - lib/json/add/symbol.rb
105
53
  - lib/json/add/time.rb
106
54
  - lib/json/common.rb
107
55
  - lib/json/ext.rb
108
- - lib/json/ext/.keep
109
56
  - lib/json/generic_object.rb
110
57
  - lib/json/pure.rb
111
58
  - lib/json/pure/generator.rb
112
59
  - lib/json/pure/parser.rb
113
60
  - lib/json/version.rb
114
- - references/rfc7159.txt
115
- - tests/fixtures/fail10.json
116
- - tests/fixtures/fail11.json
117
- - tests/fixtures/fail12.json
118
- - tests/fixtures/fail13.json
119
- - tests/fixtures/fail14.json
120
- - tests/fixtures/fail18.json
121
- - tests/fixtures/fail19.json
122
- - tests/fixtures/fail2.json
123
- - tests/fixtures/fail20.json
124
- - tests/fixtures/fail21.json
125
- - tests/fixtures/fail22.json
126
- - tests/fixtures/fail23.json
127
- - tests/fixtures/fail24.json
128
- - tests/fixtures/fail25.json
129
- - tests/fixtures/fail27.json
130
- - tests/fixtures/fail28.json
131
- - tests/fixtures/fail3.json
132
- - tests/fixtures/fail4.json
133
- - tests/fixtures/fail5.json
134
- - tests/fixtures/fail6.json
135
- - tests/fixtures/fail7.json
136
- - tests/fixtures/fail8.json
137
- - tests/fixtures/fail9.json
138
- - tests/fixtures/obsolete_fail1.json
139
- - tests/fixtures/pass1.json
140
- - tests/fixtures/pass15.json
141
- - tests/fixtures/pass16.json
142
- - tests/fixtures/pass17.json
143
- - tests/fixtures/pass2.json
144
- - tests/fixtures/pass26.json
145
- - tests/fixtures/pass3.json
146
- - tests/json_addition_test.rb
147
- - tests/json_common_interface_test.rb
148
- - tests/json_encoding_test.rb
149
- - tests/json_ext_parser_test.rb
150
- - tests/json_fixtures_test.rb
151
- - tests/json_generator_test.rb
152
- - tests/json_generic_object_test.rb
153
- - tests/json_parser_test.rb
154
- - tests/json_string_matching_test.rb
155
- - tests/test_helper.rb
156
- - tools/diff.sh
157
- - tools/fuzz.rb
158
- - tools/server.rb
159
61
  homepage: http://flori.github.com/json
160
62
  licenses:
161
63
  - Ruby
162
- metadata: {}
163
- post_install_message:
64
+ metadata:
65
+ bug_tracker_uri: https://github.com/flori/json/issues
66
+ changelog_uri: https://github.com/flori/json/blob/master/CHANGES.md
67
+ documentation_uri: http://flori.github.io/json/doc/index.html
68
+ homepage_uri: http://flori.github.io/json/
69
+ source_code_uri: https://github.com/flori/json
70
+ wiki_uri: https://github.com/flori/json/wiki
71
+ post_install_message:
164
72
  rdoc_options:
165
73
  - "--title"
166
- - JSON implemention for Ruby
74
+ - JSON implementation for Ruby
167
75
  - "--main"
168
76
  - README.md
169
77
  require_paths:
@@ -172,17 +80,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
172
80
  requirements:
173
81
  - - ">="
174
82
  - !ruby/object:Gem::Version
175
- version: '1.9'
83
+ version: '2.3'
176
84
  required_rubygems_version: !ruby/object:Gem::Requirement
177
85
  requirements:
178
86
  - - ">="
179
87
  - !ruby/object:Gem::Version
180
88
  version: '0'
181
89
  requirements: []
182
- rubyforge_project:
183
- rubygems_version: 2.6.11
184
- signing_key:
90
+ rubygems_version: 3.3.0.dev
91
+ signing_key:
185
92
  specification_version: 4
186
93
  summary: JSON Implementation for Ruby
187
- test_files:
188
- - "./tests/test_helper.rb"
94
+ test_files: []
data/.gitignore DELETED
@@ -1,17 +0,0 @@
1
- .*.sw[pon]
2
- *.bundle
3
- coverage
4
- tags
5
- pkg
6
- .nfs.*
7
- .idea
8
- java/Json.iml
9
- Gemfile.lock
10
- .rvmrc
11
- *.rbc
12
- .rbx
13
- .AppleDouble
14
- .DS_Store
15
- */**/Makefile
16
- */**/*.o
17
- .byebug_history
data/.travis.yml DELETED
@@ -1,19 +0,0 @@
1
- # Passes arguments to bundle install (http://gembundler.com/man/bundle-install.1.html)
2
- #bundler_args: --binstubs
3
- language: ruby
4
-
5
- # Specify which ruby versions you wish to run your tests on, each version will be used
6
- rvm:
7
- - 1.9.3
8
- - 2.0.0
9
- - 2.1
10
- - 2.2
11
- - 2.3.3
12
- - 2.4.1
13
- - jruby
14
- - ruby-head
15
- matrix:
16
- allow_failures:
17
- - rvm: ruby-head
18
- script: "bundle exec rake"
19
- sudo: false
data/Gemfile DELETED
@@ -1,16 +0,0 @@
1
- # vim: set ft=ruby:
2
-
3
- source 'https://rubygems.org'
4
-
5
- case ENV['JSON']
6
- when 'ext', nil
7
- if ENV['RUBY_ENGINE'] == 'jruby'
8
- gemspec :name => 'json-java'
9
- else
10
- gemspec :name => 'json'
11
- end
12
- when 'pure'
13
- gemspec :name => 'json_pure'
14
- end
15
-
16
- gem 'simplecov'
data/README-json-jruby.md DELETED
@@ -1,33 +0,0 @@
1
- JSON-JRuby
2
- ==========
3
-
4
- JSON-JRuby is a port of Florian Frank's native
5
- [`json` library](http://json.rubyforge.org/) to JRuby.
6
- It aims to be a perfect drop-in replacement for `json_pure`.
7
-
8
-
9
- Development version
10
- ===================
11
-
12
- The latest version is available from the
13
- [Git repository](http://github.com/mernen/json-jruby/tree):
14
-
15
- git clone git://github.com/mernen/json-jruby.git
16
-
17
-
18
- Compiling
19
- =========
20
-
21
- You'll need JRuby version 1.2 or greater to build JSON-JRuby.
22
- Its path must be set on the `jruby.dir` property of
23
- `nbproject/project.properties` (defaults to `../jruby`).
24
-
25
- Additionally, you'll need [Ant](http://ant.apache.org/), and
26
- [Ragel](http://www.cs.queensu.ca/~thurston/ragel/) 6.4 or greater.
27
-
28
- Then, from the folder where the sources are located, type:
29
-
30
- ant clean jar
31
-
32
- to clean any leftovers from previous builds and generate the `.jar` files.
33
- To generate a RubyGem, specify the `gem` action rather than `jar`.
data/Rakefile DELETED
@@ -1,408 +0,0 @@
1
- begin
2
- require 'rubygems/package_task'
3
- rescue LoadError
4
- end
5
-
6
- require 'rbconfig'
7
- include\
8
- begin
9
- RbConfig
10
- rescue NameError
11
- Config
12
- end
13
-
14
- require 'rake/clean'
15
- CLOBBER.include 'doc', 'Gemfile.lock'
16
- CLEAN.include FileList['diagrams/*.*'], 'doc', 'coverage', 'tmp',
17
- FileList["ext/**/{Makefile,mkmf.log}"], 'build', 'dist', FileList['**/*.rbc'],
18
- FileList["{ext,lib}/**/*.{so,bundle,#{CONFIG['DLEXT']},o,obj,pdb,lib,manifest,exp,def,jar,class,dSYM}"],
19
- FileList['java/src/**/*.class']
20
-
21
- require 'rake/testtask'
22
- class UndocumentedTestTask < Rake::TestTask
23
- def desc(*) end
24
- end
25
-
26
- MAKE = ENV['MAKE'] || %w[gmake make].find { |c| system(c, '-v') }
27
- BUNDLE = ENV['BUNDLE'] || %w[bundle].find { |c| system(c, '-v') }
28
- PKG_NAME = 'json'
29
- PKG_TITLE = 'JSON Implementation for Ruby'
30
- PKG_VERSION = File.read('VERSION').chomp
31
- PKG_FILES = FileList[`git ls-files`.split(/\n/)]
32
-
33
- EXT_ROOT_DIR = 'ext/json/ext'
34
- EXT_PARSER_DIR = "#{EXT_ROOT_DIR}/parser"
35
- EXT_PARSER_DL = "#{EXT_PARSER_DIR}/parser.#{CONFIG['DLEXT']}"
36
- RAGEL_PATH = "#{EXT_PARSER_DIR}/parser.rl"
37
- EXT_PARSER_SRC = "#{EXT_PARSER_DIR}/parser.c"
38
- EXT_GENERATOR_DIR = "#{EXT_ROOT_DIR}/generator"
39
- EXT_GENERATOR_DL = "#{EXT_GENERATOR_DIR}/generator.#{CONFIG['DLEXT']}"
40
- EXT_GENERATOR_SRC = "#{EXT_GENERATOR_DIR}/generator.c"
41
-
42
- JAVA_DIR = "java/src/json/ext"
43
- JAVA_RAGEL_PATH = "#{JAVA_DIR}/Parser.rl"
44
- JAVA_PARSER_SRC = "#{JAVA_DIR}/Parser.java"
45
- JAVA_SOURCES = FileList["#{JAVA_DIR}/*.java"]
46
- JAVA_CLASSES = []
47
- JRUBY_PARSER_JAR = File.expand_path("lib/json/ext/parser.jar")
48
- JRUBY_GENERATOR_JAR = File.expand_path("lib/json/ext/generator.jar")
49
-
50
- RAGEL_CODEGEN = %w[rlcodegen rlgen-cd ragel].find { |c| system(c, '-v') }
51
- RAGEL_DOTGEN = %w[rlgen-dot rlgen-cd ragel].find { |c| system(c, '-v') }
52
-
53
- desc "Installing library (pure)"
54
- task :install_pure => :version do
55
- ruby 'install.rb'
56
- end
57
-
58
- task :install_ext_really do
59
- sitearchdir = CONFIG["sitearchdir"]
60
- cd 'ext' do
61
- for file in Dir["json/ext/*.#{CONFIG['DLEXT']}"]
62
- d = File.join(sitearchdir, file)
63
- mkdir_p File.dirname(d)
64
- install(file, d)
65
- end
66
- warn " *** Installed EXT ruby library."
67
- end
68
- end
69
-
70
- desc "Installing library (extension)"
71
- task :install_ext => [ :compile, :install_pure, :install_ext_really ]
72
-
73
- desc "Installing library (extension)"
74
- task :install => :install_ext
75
-
76
- if defined?(Gem) and defined?(Gem::PackageTask)
77
- spec_pure = Gem::Specification.new do |s|
78
- s.name = 'json_pure'
79
- s.version = PKG_VERSION
80
- s.summary = PKG_TITLE
81
- s.description = "This is a JSON implementation in pure Ruby."
82
-
83
- s.files = PKG_FILES
84
-
85
- s.require_path = 'lib'
86
- s.add_development_dependency 'rake'
87
- s.add_development_dependency 'test-unit', '~> 2.0'
88
-
89
- s.extra_rdoc_files << 'README.md'
90
- s.rdoc_options <<
91
- '--title' << 'JSON implemention for ruby' << '--main' << 'README.md'
92
- s.test_files.concat Dir['./tests/test_*.rb']
93
-
94
- s.author = "Florian Frank"
95
- s.email = "flori@ping.de"
96
- s.homepage = "http://flori.github.com/#{PKG_NAME}"
97
- s.license = 'Ruby'
98
- s.required_ruby_version = '>= 1.9'
99
- end
100
-
101
- desc 'Creates a json_pure.gemspec file'
102
- task :gemspec_pure => :version do
103
- File.open('json_pure.gemspec', 'w') do |gemspec|
104
- gemspec.write spec_pure.to_ruby
105
- end
106
- end
107
-
108
- Gem::PackageTask.new(spec_pure) do |pkg|
109
- pkg.need_tar = true
110
- pkg.package_files = PKG_FILES
111
- end
112
-
113
- spec_ext = Gem::Specification.new do |s|
114
- s.name = 'json'
115
- s.version = PKG_VERSION
116
- s.summary = PKG_TITLE
117
- s.description = "This is a JSON implementation as a Ruby extension in C."
118
-
119
- s.files = PKG_FILES
120
-
121
- s.extensions = FileList['ext/**/extconf.rb']
122
-
123
- s.require_path = 'lib'
124
- s.add_development_dependency 'rake'
125
- s.add_development_dependency 'test-unit', '~> 2.0'
126
-
127
- s.extra_rdoc_files << 'README.md'
128
- s.rdoc_options <<
129
- '--title' << 'JSON implemention for Ruby' << '--main' << 'README.md'
130
- s.test_files.concat Dir['./tests/test_*.rb']
131
-
132
- s.author = "Florian Frank"
133
- s.email = "flori@ping.de"
134
- s.homepage = "http://flori.github.com/#{PKG_NAME}"
135
- s.license = 'Ruby'
136
- s.required_ruby_version = '>= 1.9'
137
- end
138
-
139
- desc 'Creates a json.gemspec file'
140
- task :gemspec_ext => :version do
141
- File.open('json.gemspec', 'w') do |gemspec|
142
- gemspec.write spec_ext.to_ruby
143
- end
144
- end
145
-
146
- Gem::PackageTask.new(spec_ext) do |pkg|
147
- pkg.need_tar = true
148
- pkg.package_files = PKG_FILES
149
- end
150
-
151
-
152
- desc 'Create all gemspec files'
153
- task :gemspec => [ :gemspec_pure, :gemspec_ext ]
154
- end
155
-
156
- desc m = "Writing version information for #{PKG_VERSION}"
157
- task :version do
158
- puts m
159
- File.open(File.join('lib', 'json', 'version.rb'), 'w') do |v|
160
- v.puts <<EOT
161
- # frozen_string_literal: false
162
- module JSON
163
- # JSON version
164
- VERSION = '#{PKG_VERSION}'
165
- VERSION_ARRAY = VERSION.split(/\\./).map { |x| x.to_i } # :nodoc:
166
- VERSION_MAJOR = VERSION_ARRAY[0] # :nodoc:
167
- VERSION_MINOR = VERSION_ARRAY[1] # :nodoc:
168
- VERSION_BUILD = VERSION_ARRAY[2] # :nodoc:
169
- end
170
- EOT
171
- end
172
- end
173
-
174
- task :check_env do
175
- ENV.key?('JSON') or fail "JSON env var is required"
176
- end
177
-
178
- desc "Testing library (pure ruby)"
179
- task :test_pure => [ :clean, :check_env, :do_test_pure ]
180
-
181
- UndocumentedTestTask.new do |t|
182
- t.name = 'do_test_pure'
183
- t.libs << 'lib' << 'tests'
184
- t.test_files = FileList['tests/*_test.rb']
185
- t.verbose = true
186
- t.options = '-v'
187
- end
188
-
189
- desc "Testing library (pure ruby and extension)"
190
- task :test do
191
- sh "env JSON=pure #{BUNDLE} exec rake test_pure" or exit 1
192
- sh "env JSON=ext #{BUNDLE} exec rake test_ext" or exit 1
193
- end
194
-
195
- namespace :gems do
196
- desc 'Install all development gems'
197
- task :install do
198
- sh "#{BUNDLE}"
199
- end
200
- end
201
-
202
- if defined?(RUBY_ENGINE) and RUBY_ENGINE == 'jruby'
203
- ENV['JAVA_HOME'] ||= [
204
- '/usr/local/java/jdk',
205
- '/usr/lib/jvm/java-6-openjdk',
206
- '/Library/Java/Home',
207
- ].find { |c| File.directory?(c) }
208
- if ENV['JAVA_HOME']
209
- warn " *** JAVA_HOME is set to #{ENV['JAVA_HOME'].inspect}"
210
- ENV['PATH'] = ENV['PATH'].split(/:/).unshift(java_path = "#{ENV['JAVA_HOME']}/bin") * ':'
211
- warn " *** java binaries are assumed to be in #{java_path.inspect}"
212
- else
213
- warn " *** JAVA_HOME was not set or could not be guessed!"
214
- exit 1
215
- end
216
-
217
- file JAVA_PARSER_SRC => JAVA_RAGEL_PATH do
218
- cd JAVA_DIR do
219
- if RAGEL_CODEGEN == 'ragel'
220
- sh "ragel Parser.rl -J -o Parser.java"
221
- else
222
- sh "ragel -x Parser.rl | #{RAGEL_CODEGEN} -J"
223
- end
224
- end
225
- end
226
-
227
- desc "Generate parser for java with ragel"
228
- task :ragel => JAVA_PARSER_SRC
229
-
230
- desc "Delete the ragel generated Java source"
231
- task :ragel_clean do
232
- rm_rf JAVA_PARSER_SRC
233
- end
234
-
235
- JRUBY_JAR = File.join(CONFIG["libdir"], "jruby.jar")
236
- if File.exist?(JRUBY_JAR)
237
- JAVA_SOURCES.each do |src|
238
- classpath = (Dir['java/lib/*.jar'] << 'java/src' << JRUBY_JAR) * ':'
239
- obj = src.sub(/\.java\Z/, '.class')
240
- file obj => src do
241
- sh 'javac', '-classpath', classpath, '-source', '1.5', '-target', '1.5', src
242
- end
243
- JAVA_CLASSES << obj
244
- end
245
- else
246
- warn "WARNING: Cannot find jruby in path => Cannot build jruby extension!"
247
- end
248
-
249
- desc "Compiling jruby extension"
250
- task :compile => JAVA_CLASSES
251
-
252
- desc "Package the jruby gem"
253
- task :jruby_gem => :create_jar do
254
- sh 'gem build json-java.gemspec'
255
- mkdir_p 'pkg'
256
- mv "json-#{PKG_VERSION}-java.gem", 'pkg'
257
- end
258
-
259
- desc "Testing library (jruby)"
260
- task :test_ext => [ :check_env, :create_jar, :do_test_ext ]
261
-
262
- UndocumentedTestTask.new do |t|
263
- t.name = 'do_test_ext'
264
- t.libs << 'lib' << 'tests'
265
- t.test_files = FileList['tests/*_test.rb']
266
- t.verbose = true
267
- t.options = '-v'
268
- end
269
-
270
- file JRUBY_PARSER_JAR => :compile do
271
- cd 'java/src' do
272
- parser_classes = FileList[
273
- "json/ext/ByteListTranscoder*.class",
274
- "json/ext/OptionsReader*.class",
275
- "json/ext/Parser*.class",
276
- "json/ext/RuntimeInfo*.class",
277
- "json/ext/StringDecoder*.class",
278
- "json/ext/Utils*.class"
279
- ]
280
- sh 'jar', 'cf', File.basename(JRUBY_PARSER_JAR), *parser_classes
281
- mv File.basename(JRUBY_PARSER_JAR), File.dirname(JRUBY_PARSER_JAR)
282
- end
283
- end
284
-
285
- desc "Create parser jar"
286
- task :create_parser_jar => JRUBY_PARSER_JAR
287
-
288
- file JRUBY_GENERATOR_JAR => :compile do
289
- cd 'java/src' do
290
- generator_classes = FileList[
291
- "json/ext/ByteListTranscoder*.class",
292
- "json/ext/OptionsReader*.class",
293
- "json/ext/Generator*.class",
294
- "json/ext/RuntimeInfo*.class",
295
- "json/ext/StringEncoder*.class",
296
- "json/ext/Utils*.class"
297
- ]
298
- sh 'jar', 'cf', File.basename(JRUBY_GENERATOR_JAR), *generator_classes
299
- mv File.basename(JRUBY_GENERATOR_JAR), File.dirname(JRUBY_GENERATOR_JAR)
300
- end
301
- end
302
-
303
- desc "Create generator jar"
304
- task :create_generator_jar => JRUBY_GENERATOR_JAR
305
-
306
- desc "Create parser and generator jars"
307
- task :create_jar => [ :create_parser_jar, :create_generator_jar ]
308
-
309
- desc "Build all gems and archives for a new release of the jruby extension."
310
- task :build => [ :clean, :version, :jruby_gem ]
311
-
312
- task :release => :build
313
- else
314
- desc "Compiling extension"
315
- task :compile => [ EXT_PARSER_DL, EXT_GENERATOR_DL ]
316
-
317
- file EXT_PARSER_DL => EXT_PARSER_SRC do
318
- cd EXT_PARSER_DIR do
319
- ruby 'extconf.rb'
320
- sh MAKE
321
- end
322
- cp "#{EXT_PARSER_DIR}/parser.#{CONFIG['DLEXT']}", EXT_ROOT_DIR
323
- end
324
-
325
- file EXT_GENERATOR_DL => EXT_GENERATOR_SRC do
326
- cd EXT_GENERATOR_DIR do
327
- ruby 'extconf.rb'
328
- sh MAKE
329
- end
330
- cp "#{EXT_GENERATOR_DIR}/generator.#{CONFIG['DLEXT']}", EXT_ROOT_DIR
331
- end
332
-
333
- desc "Testing library (extension)"
334
- task :test_ext => [ :check_env, :compile, :do_test_ext ]
335
-
336
- UndocumentedTestTask.new do |t|
337
- t.name = 'do_test_ext'
338
- t.libs << 'ext' << 'lib' << 'tests'
339
- t.test_files = FileList['tests/*_test.rb']
340
- t.verbose = true
341
- t.options = '-v'
342
- end
343
-
344
- desc "Generate parser with ragel"
345
- task :ragel => EXT_PARSER_SRC
346
-
347
- desc "Delete the ragel generated C source"
348
- task :ragel_clean do
349
- rm_rf EXT_PARSER_SRC
350
- end
351
-
352
- desc "Update the tags file"
353
- task :tags do
354
- system 'ctags', *Dir['**/*.{rb,c,h,java}']
355
- end
356
-
357
- file EXT_PARSER_SRC => RAGEL_PATH do
358
- cd EXT_PARSER_DIR do
359
- if RAGEL_CODEGEN == 'ragel'
360
- sh "ragel parser.rl -G2 -o parser.c"
361
- else
362
- sh "ragel -x parser.rl | #{RAGEL_CODEGEN} -G2"
363
- end
364
- src = File.read("parser.c").gsub(/[ \t]+$/, '')
365
- src.gsub!(/^static const int (JSON_.*=.*);$/, 'enum {\1};')
366
- File.open("parser.c", "w") {|f| f.print src}
367
- end
368
- end
369
-
370
- desc "Generate diagrams of ragel parser (ps)"
371
- task :ragel_dot_ps do
372
- root = 'diagrams'
373
- specs = []
374
- File.new(RAGEL_PATH).grep(/^\s*machine\s*(\S+);\s*$/) { specs << $1 }
375
- for s in specs
376
- if RAGEL_DOTGEN == 'ragel'
377
- sh "ragel #{RAGEL_PATH} -S#{s} -p -V | dot -Tps -o#{root}/#{s}.ps"
378
- else
379
- sh "ragel -x #{RAGEL_PATH} -S#{s} | #{RAGEL_DOTGEN} -p|dot -Tps -o#{root}/#{s}.ps"
380
- end
381
- end
382
- end
383
-
384
- desc "Generate diagrams of ragel parser (png)"
385
- task :ragel_dot_png do
386
- root = 'diagrams'
387
- specs = []
388
- File.new(RAGEL_PATH).grep(/^\s*machine\s*(\S+);\s*$/) { specs << $1 }
389
- for s in specs
390
- if RAGEL_DOTGEN == 'ragel'
391
- sh "ragel #{RAGEL_PATH} -S#{s} -p -V | dot -Tpng -o#{root}/#{s}.png"
392
- else
393
- sh "ragel -x #{RAGEL_PATH} -S#{s} | #{RAGEL_DOTGEN} -p|dot -Tpng -o#{root}/#{s}.png"
394
- end
395
- end
396
- end
397
-
398
- desc "Generate diagrams of ragel parser"
399
- task :ragel_dot => [ :ragel_dot_png, :ragel_dot_ps ]
400
-
401
- desc "Build all gems and archives for a new release of json and json_pure."
402
- task :build => [ :clean, :gemspec, :package ]
403
-
404
- task :release => :build
405
- end
406
-
407
- desc "Compile in the the source directory"
408
- task :default => [ :clean, :gemspec, :test ]
data/data/example.json DELETED
@@ -1 +0,0 @@
1
- {"a":2,"b":3.141,"TIME":"2007-03-14T11:52:40","c":"c","d":[1,"b",3.14],"COUNT":666,"e":{"foo":"bar"},"foo":"B\u00e4r","g":"\u677e\u672c\u884c\u5f18","h":1000.0,"bar":"\u00a9 \u2260 \u20ac!","i":0.001,"j":"\ud840\udc01"}