json 2.3.0 → 2.6.2

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 (88) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +71 -5
  3. data/README.md +19 -3
  4. data/VERSION +1 -1
  5. data/ext/json/ext/generator/generator.c +132 -23
  6. data/ext/json/ext/generator/generator.h +5 -2
  7. data/ext/json/ext/parser/extconf.rb +26 -0
  8. data/ext/json/ext/parser/parser.c +2979 -1768
  9. data/ext/json/ext/parser/parser.h +6 -1
  10. data/ext/json/ext/parser/parser.rl +128 -38
  11. data/ext/json/extconf.rb +1 -0
  12. data/json.gemspec +0 -0
  13. data/lib/json/add/complex.rb +0 -1
  14. data/lib/json/add/rational.rb +0 -1
  15. data/lib/json/common.rb +370 -123
  16. data/lib/json/pure/generator.rb +29 -9
  17. data/lib/json/pure/parser.rb +23 -5
  18. data/lib/json/version.rb +1 -1
  19. data/lib/json.rb +549 -29
  20. metadata +17 -109
  21. data/.gitignore +0 -18
  22. data/.travis.yml +0 -24
  23. data/Gemfile +0 -14
  24. data/README-json-jruby.md +0 -33
  25. data/Rakefile +0 -413
  26. data/diagrams/.keep +0 -0
  27. data/install.rb +0 -23
  28. data/java/src/json/ext/ByteListTranscoder.java +0 -166
  29. data/java/src/json/ext/Generator.java +0 -466
  30. data/java/src/json/ext/GeneratorMethods.java +0 -231
  31. data/java/src/json/ext/GeneratorService.java +0 -42
  32. data/java/src/json/ext/GeneratorState.java +0 -490
  33. data/java/src/json/ext/OptionsReader.java +0 -113
  34. data/java/src/json/ext/Parser.java +0 -2362
  35. data/java/src/json/ext/Parser.rl +0 -893
  36. data/java/src/json/ext/ParserService.java +0 -34
  37. data/java/src/json/ext/RuntimeInfo.java +0 -116
  38. data/java/src/json/ext/StringDecoder.java +0 -166
  39. data/java/src/json/ext/StringEncoder.java +0 -111
  40. data/java/src/json/ext/Utils.java +0 -88
  41. data/json-java.gemspec +0 -37
  42. data/json_pure.gemspec +0 -38
  43. data/lib/json/ext/.keep +0 -0
  44. data/references/rfc7159.txt +0 -899
  45. data/tests/fixtures/fail10.json +0 -1
  46. data/tests/fixtures/fail11.json +0 -1
  47. data/tests/fixtures/fail12.json +0 -1
  48. data/tests/fixtures/fail13.json +0 -1
  49. data/tests/fixtures/fail14.json +0 -1
  50. data/tests/fixtures/fail18.json +0 -1
  51. data/tests/fixtures/fail19.json +0 -1
  52. data/tests/fixtures/fail2.json +0 -1
  53. data/tests/fixtures/fail20.json +0 -1
  54. data/tests/fixtures/fail21.json +0 -1
  55. data/tests/fixtures/fail22.json +0 -1
  56. data/tests/fixtures/fail23.json +0 -1
  57. data/tests/fixtures/fail24.json +0 -1
  58. data/tests/fixtures/fail25.json +0 -1
  59. data/tests/fixtures/fail27.json +0 -2
  60. data/tests/fixtures/fail28.json +0 -2
  61. data/tests/fixtures/fail3.json +0 -1
  62. data/tests/fixtures/fail4.json +0 -1
  63. data/tests/fixtures/fail5.json +0 -1
  64. data/tests/fixtures/fail6.json +0 -1
  65. data/tests/fixtures/fail7.json +0 -1
  66. data/tests/fixtures/fail8.json +0 -1
  67. data/tests/fixtures/fail9.json +0 -1
  68. data/tests/fixtures/obsolete_fail1.json +0 -1
  69. data/tests/fixtures/pass1.json +0 -56
  70. data/tests/fixtures/pass15.json +0 -1
  71. data/tests/fixtures/pass16.json +0 -1
  72. data/tests/fixtures/pass17.json +0 -1
  73. data/tests/fixtures/pass2.json +0 -1
  74. data/tests/fixtures/pass26.json +0 -1
  75. data/tests/fixtures/pass3.json +0 -6
  76. data/tests/json_addition_test.rb +0 -203
  77. data/tests/json_common_interface_test.rb +0 -126
  78. data/tests/json_encoding_test.rb +0 -107
  79. data/tests/json_ext_parser_test.rb +0 -15
  80. data/tests/json_fixtures_test.rb +0 -32
  81. data/tests/json_generator_test.rb +0 -421
  82. data/tests/json_generic_object_test.rb +0 -82
  83. data/tests/json_parser_test.rb +0 -472
  84. data/tests/json_string_matching_test.rb +0 -38
  85. data/tests/test_helper.rb +0 -17
  86. data/tools/diff.sh +0 -18
  87. data/tools/fuzz.rb +0 -131
  88. 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.3.0
4
+ version: 2.6.2
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: 2019-12-11 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: 2022-05-16 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,17 +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
24
  - LICENSE
57
- - README-json-jruby.md
58
25
  - README.md
59
- - Rakefile
60
26
  - VERSION
61
- - diagrams/.keep
62
27
  - ext/json/ext/fbuffer/fbuffer.h
63
28
  - ext/json/ext/generator/depend
64
29
  - ext/json/ext/generator/extconf.rb
@@ -70,23 +35,7 @@ files:
70
35
  - ext/json/ext/parser/parser.h
71
36
  - ext/json/ext/parser/parser.rl
72
37
  - ext/json/extconf.rb
73
- - install.rb
74
- - java/src/json/ext/ByteListTranscoder.java
75
- - java/src/json/ext/Generator.java
76
- - java/src/json/ext/GeneratorMethods.java
77
- - java/src/json/ext/GeneratorService.java
78
- - java/src/json/ext/GeneratorState.java
79
- - java/src/json/ext/OptionsReader.java
80
- - java/src/json/ext/Parser.java
81
- - java/src/json/ext/Parser.rl
82
- - java/src/json/ext/ParserService.java
83
- - java/src/json/ext/RuntimeInfo.java
84
- - java/src/json/ext/StringDecoder.java
85
- - java/src/json/ext/StringEncoder.java
86
- - java/src/json/ext/Utils.java
87
- - json-java.gemspec
88
38
  - json.gemspec
89
- - json_pure.gemspec
90
39
  - lib/json.rb
91
40
  - lib/json/add/bigdecimal.rb
92
41
  - lib/json/add/complex.rb
@@ -104,65 +53,25 @@ files:
104
53
  - lib/json/add/time.rb
105
54
  - lib/json/common.rb
106
55
  - lib/json/ext.rb
107
- - lib/json/ext/.keep
108
56
  - lib/json/generic_object.rb
109
57
  - lib/json/pure.rb
110
58
  - lib/json/pure/generator.rb
111
59
  - lib/json/pure/parser.rb
112
60
  - lib/json/version.rb
113
- - references/rfc7159.txt
114
- - tests/fixtures/fail10.json
115
- - tests/fixtures/fail11.json
116
- - tests/fixtures/fail12.json
117
- - tests/fixtures/fail13.json
118
- - tests/fixtures/fail14.json
119
- - tests/fixtures/fail18.json
120
- - tests/fixtures/fail19.json
121
- - tests/fixtures/fail2.json
122
- - tests/fixtures/fail20.json
123
- - tests/fixtures/fail21.json
124
- - tests/fixtures/fail22.json
125
- - tests/fixtures/fail23.json
126
- - tests/fixtures/fail24.json
127
- - tests/fixtures/fail25.json
128
- - tests/fixtures/fail27.json
129
- - tests/fixtures/fail28.json
130
- - tests/fixtures/fail3.json
131
- - tests/fixtures/fail4.json
132
- - tests/fixtures/fail5.json
133
- - tests/fixtures/fail6.json
134
- - tests/fixtures/fail7.json
135
- - tests/fixtures/fail8.json
136
- - tests/fixtures/fail9.json
137
- - tests/fixtures/obsolete_fail1.json
138
- - tests/fixtures/pass1.json
139
- - tests/fixtures/pass15.json
140
- - tests/fixtures/pass16.json
141
- - tests/fixtures/pass17.json
142
- - tests/fixtures/pass2.json
143
- - tests/fixtures/pass26.json
144
- - tests/fixtures/pass3.json
145
- - tests/json_addition_test.rb
146
- - tests/json_common_interface_test.rb
147
- - tests/json_encoding_test.rb
148
- - tests/json_ext_parser_test.rb
149
- - tests/json_fixtures_test.rb
150
- - tests/json_generator_test.rb
151
- - tests/json_generic_object_test.rb
152
- - tests/json_parser_test.rb
153
- - tests/json_string_matching_test.rb
154
- - tests/test_helper.rb
155
- - tools/diff.sh
156
- - tools/fuzz.rb
157
- - tools/server.rb
158
61
  homepage: http://flori.github.com/json
159
62
  licenses:
160
63
  - Ruby
161
- metadata: {}
162
- 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:
163
72
  rdoc_options:
164
73
  - "--title"
165
- - JSON implemention for Ruby
74
+ - JSON implementation for Ruby
166
75
  - "--main"
167
76
  - README.md
168
77
  require_paths:
@@ -171,16 +80,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
171
80
  requirements:
172
81
  - - ">="
173
82
  - !ruby/object:Gem::Version
174
- version: '1.9'
83
+ version: '2.3'
175
84
  required_rubygems_version: !ruby/object:Gem::Requirement
176
85
  requirements:
177
86
  - - ">="
178
87
  - !ruby/object:Gem::Version
179
88
  version: '0'
180
89
  requirements: []
181
- rubygems_version: 3.0.3
182
- signing_key:
90
+ rubygems_version: 3.3.13
91
+ signing_key:
183
92
  specification_version: 4
184
93
  summary: JSON Implementation for Ruby
185
- test_files:
186
- - "./tests/test_helper.rb"
94
+ test_files: []
data/.gitignore DELETED
@@ -1,18 +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
18
- *.log
data/.travis.yml DELETED
@@ -1,24 +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
- - 2.0.0
8
- - 2.1
9
- - 2.2
10
- - 2.3
11
- - 2.4
12
- - 2.5
13
- - 2.6
14
- - 2.7.0-preview3
15
- - ruby-head
16
- - jruby
17
- - jruby-9.2.7.0
18
- matrix:
19
- allow_failures:
20
- - rvm: ruby-head
21
- - rvm: jruby
22
- - rvm: jruby-9.2.7.0
23
- script: "bundle exec rake"
24
- sudo: false
data/Gemfile DELETED
@@ -1,14 +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
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,413 +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
- which = lambda { |c|
27
- w = `which #{c}`
28
- break w.chomp unless w.empty?
29
- }
30
-
31
- MAKE = ENV['MAKE'] || %w[gmake make].find(&which)
32
- BUNDLE = ENV['BUNDLE'] || %w[bundle].find(&which)
33
- PKG_NAME = 'json'
34
- PKG_TITLE = 'JSON Implementation for Ruby'
35
- PKG_VERSION = File.read('VERSION').chomp
36
- PKG_FILES = FileList[`git ls-files`.split(/\n/)]
37
-
38
- EXT_ROOT_DIR = 'ext/json/ext'
39
- EXT_PARSER_DIR = "#{EXT_ROOT_DIR}/parser"
40
- EXT_PARSER_DL = "#{EXT_PARSER_DIR}/parser.#{CONFIG['DLEXT']}"
41
- RAGEL_PATH = "#{EXT_PARSER_DIR}/parser.rl"
42
- EXT_PARSER_SRC = "#{EXT_PARSER_DIR}/parser.c"
43
- EXT_GENERATOR_DIR = "#{EXT_ROOT_DIR}/generator"
44
- EXT_GENERATOR_DL = "#{EXT_GENERATOR_DIR}/generator.#{CONFIG['DLEXT']}"
45
- EXT_GENERATOR_SRC = "#{EXT_GENERATOR_DIR}/generator.c"
46
-
47
- JAVA_DIR = "java/src/json/ext"
48
- JAVA_RAGEL_PATH = "#{JAVA_DIR}/Parser.rl"
49
- JAVA_PARSER_SRC = "#{JAVA_DIR}/Parser.java"
50
- JAVA_SOURCES = FileList["#{JAVA_DIR}/*.java"]
51
- JAVA_CLASSES = []
52
- JRUBY_PARSER_JAR = File.expand_path("lib/json/ext/parser.jar")
53
- JRUBY_GENERATOR_JAR = File.expand_path("lib/json/ext/generator.jar")
54
-
55
- RAGEL_CODEGEN = %w[rlcodegen rlgen-cd ragel].find(&which)
56
- RAGEL_DOTGEN = %w[rlgen-dot rlgen-cd ragel].find(&which)
57
-
58
- desc "Installing library (pure)"
59
- task :install_pure => :version do
60
- ruby 'install.rb'
61
- end
62
-
63
- task :install_ext_really do
64
- sitearchdir = CONFIG["sitearchdir"]
65
- cd 'ext' do
66
- for file in Dir["json/ext/*.#{CONFIG['DLEXT']}"]
67
- d = File.join(sitearchdir, file)
68
- mkdir_p File.dirname(d)
69
- install(file, d)
70
- end
71
- warn " *** Installed EXT ruby library."
72
- end
73
- end
74
-
75
- desc "Installing library (extension)"
76
- task :install_ext => [ :compile, :install_pure, :install_ext_really ]
77
-
78
- desc "Installing library (extension)"
79
- task :install => :install_ext
80
-
81
- if defined?(Gem) and defined?(Gem::PackageTask)
82
- spec_pure = Gem::Specification.new do |s|
83
- s.name = 'json_pure'
84
- s.version = PKG_VERSION
85
- s.summary = PKG_TITLE
86
- s.description = "This is a JSON implementation in pure Ruby."
87
-
88
- s.files = PKG_FILES
89
-
90
- s.require_path = 'lib'
91
- s.add_development_dependency 'rake'
92
- s.add_development_dependency 'test-unit', '~> 2.0'
93
-
94
- s.extra_rdoc_files << 'README.md'
95
- s.rdoc_options <<
96
- '--title' << 'JSON implemention for ruby' << '--main' << 'README.md'
97
- s.test_files.concat Dir['./tests/test_*.rb']
98
-
99
- s.author = "Florian Frank"
100
- s.email = "flori@ping.de"
101
- s.homepage = "http://flori.github.com/#{PKG_NAME}"
102
- s.license = 'Ruby'
103
- s.required_ruby_version = '>= 1.9'
104
- end
105
-
106
- desc 'Creates a json_pure.gemspec file'
107
- task :gemspec_pure => :version do
108
- File.open('json_pure.gemspec', 'w') do |gemspec|
109
- gemspec.write spec_pure.to_ruby
110
- end
111
- end
112
-
113
- Gem::PackageTask.new(spec_pure) do |pkg|
114
- pkg.need_tar = true
115
- pkg.package_files = PKG_FILES
116
- end
117
-
118
- spec_ext = Gem::Specification.new do |s|
119
- s.name = 'json'
120
- s.version = PKG_VERSION
121
- s.summary = PKG_TITLE
122
- s.description = "This is a JSON implementation as a Ruby extension in C."
123
-
124
- s.files = PKG_FILES
125
-
126
- s.extensions = FileList['ext/**/extconf.rb']
127
-
128
- s.require_path = 'lib'
129
- s.add_development_dependency 'rake'
130
- s.add_development_dependency 'test-unit', '~> 2.0'
131
-
132
- s.extra_rdoc_files << 'README.md'
133
- s.rdoc_options <<
134
- '--title' << 'JSON implemention for Ruby' << '--main' << 'README.md'
135
- s.test_files.concat Dir['./tests/test_*.rb']
136
-
137
- s.author = "Florian Frank"
138
- s.email = "flori@ping.de"
139
- s.homepage = "http://flori.github.com/#{PKG_NAME}"
140
- s.license = 'Ruby'
141
- s.required_ruby_version = '>= 1.9'
142
- end
143
-
144
- desc 'Creates a json.gemspec file'
145
- task :gemspec_ext => :version do
146
- File.open('json.gemspec', 'w') do |gemspec|
147
- gemspec.write spec_ext.to_ruby
148
- end
149
- end
150
-
151
- Gem::PackageTask.new(spec_ext) do |pkg|
152
- pkg.need_tar = true
153
- pkg.package_files = PKG_FILES
154
- end
155
-
156
-
157
- desc 'Create all gemspec files'
158
- task :gemspec => [ :gemspec_pure, :gemspec_ext ]
159
- end
160
-
161
- desc m = "Writing version information for #{PKG_VERSION}"
162
- task :version do
163
- puts m
164
- File.open(File.join('lib', 'json', 'version.rb'), 'w') do |v|
165
- v.puts <<EOT
166
- # frozen_string_literal: false
167
- module JSON
168
- # JSON version
169
- VERSION = '#{PKG_VERSION}'
170
- VERSION_ARRAY = VERSION.split(/\\./).map { |x| x.to_i } # :nodoc:
171
- VERSION_MAJOR = VERSION_ARRAY[0] # :nodoc:
172
- VERSION_MINOR = VERSION_ARRAY[1] # :nodoc:
173
- VERSION_BUILD = VERSION_ARRAY[2] # :nodoc:
174
- end
175
- EOT
176
- end
177
- end
178
-
179
- task :check_env do
180
- ENV.key?('JSON') or fail "JSON env var is required"
181
- end
182
-
183
- desc "Testing library (pure ruby)"
184
- task :test_pure => [ :clean, :check_env, :do_test_pure ]
185
-
186
- UndocumentedTestTask.new do |t|
187
- t.name = 'do_test_pure'
188
- t.libs << 'lib' << 'tests'
189
- t.test_files = FileList['tests/*_test.rb']
190
- t.verbose = true
191
- t.options = '-v'
192
- end
193
-
194
- desc "Testing library (pure ruby and extension)"
195
- task :test do
196
- sh "env JSON=pure #{BUNDLE} exec rake test_pure" or exit 1
197
- sh "env JSON=ext #{BUNDLE} exec rake test_ext" or exit 1
198
- end
199
-
200
- namespace :gems do
201
- desc 'Install all development gems'
202
- task :install do
203
- sh "#{BUNDLE}"
204
- end
205
- end
206
-
207
- if defined?(RUBY_ENGINE) and RUBY_ENGINE == 'jruby'
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) }
213
- if ENV['JAVA_HOME']
214
- warn " *** JAVA_HOME is set to #{ENV['JAVA_HOME'].inspect}"
215
- ENV['PATH'] = ENV['PATH'].split(/:/).unshift(java_path = "#{ENV['JAVA_HOME']}/bin") * ':'
216
- warn " *** java binaries are assumed to be in #{java_path.inspect}"
217
- else
218
- warn " *** JAVA_HOME was not set or could not be guessed!"
219
- exit 1
220
- end
221
-
222
- file JAVA_PARSER_SRC => JAVA_RAGEL_PATH do
223
- cd JAVA_DIR do
224
- if RAGEL_CODEGEN == 'ragel'
225
- sh "ragel Parser.rl -J -o Parser.java"
226
- else
227
- sh "ragel -x Parser.rl | #{RAGEL_CODEGEN} -J"
228
- end
229
- end
230
- end
231
-
232
- desc "Generate parser for java with ragel"
233
- task :ragel => JAVA_PARSER_SRC
234
-
235
- desc "Delete the ragel generated Java source"
236
- task :ragel_clean do
237
- rm_rf JAVA_PARSER_SRC
238
- end
239
-
240
- JRUBY_JAR = File.join(CONFIG["libdir"], "jruby.jar")
241
- if File.exist?(JRUBY_JAR)
242
- JAVA_SOURCES.each do |src|
243
- classpath = (Dir['java/lib/*.jar'] << 'java/src' << JRUBY_JAR) * ':'
244
- obj = src.sub(/\.java\Z/, '.class')
245
- file obj => src do
246
- sh 'javac', '-classpath', classpath, '-source', '1.6', '-target', '1.6', src
247
- end
248
- JAVA_CLASSES << obj
249
- end
250
- else
251
- warn "WARNING: Cannot find jruby in path => Cannot build jruby extension!"
252
- end
253
-
254
- desc "Compiling jruby extension"
255
- task :compile => JAVA_CLASSES
256
-
257
- desc "Package the jruby gem"
258
- task :jruby_gem => :create_jar do
259
- sh 'gem build json-java.gemspec'
260
- mkdir_p 'pkg'
261
- mv "json-#{PKG_VERSION}-java.gem", 'pkg'
262
- end
263
-
264
- desc "Testing library (jruby)"
265
- task :test_ext => [ :check_env, :create_jar, :do_test_ext ]
266
-
267
- UndocumentedTestTask.new do |t|
268
- t.name = 'do_test_ext'
269
- t.libs << 'lib' << 'tests'
270
- t.test_files = FileList['tests/*_test.rb']
271
- t.verbose = true
272
- t.options = '-v'
273
- end
274
-
275
- file JRUBY_PARSER_JAR => :compile do
276
- cd 'java/src' do
277
- parser_classes = FileList[
278
- "json/ext/ByteListTranscoder*.class",
279
- "json/ext/OptionsReader*.class",
280
- "json/ext/Parser*.class",
281
- "json/ext/RuntimeInfo*.class",
282
- "json/ext/StringDecoder*.class",
283
- "json/ext/Utils*.class"
284
- ]
285
- sh 'jar', 'cf', File.basename(JRUBY_PARSER_JAR), *parser_classes
286
- mv File.basename(JRUBY_PARSER_JAR), File.dirname(JRUBY_PARSER_JAR)
287
- end
288
- end
289
-
290
- desc "Create parser jar"
291
- task :create_parser_jar => JRUBY_PARSER_JAR
292
-
293
- file JRUBY_GENERATOR_JAR => :compile do
294
- cd 'java/src' do
295
- generator_classes = FileList[
296
- "json/ext/ByteListTranscoder*.class",
297
- "json/ext/OptionsReader*.class",
298
- "json/ext/Generator*.class",
299
- "json/ext/RuntimeInfo*.class",
300
- "json/ext/StringEncoder*.class",
301
- "json/ext/Utils*.class"
302
- ]
303
- sh 'jar', 'cf', File.basename(JRUBY_GENERATOR_JAR), *generator_classes
304
- mv File.basename(JRUBY_GENERATOR_JAR), File.dirname(JRUBY_GENERATOR_JAR)
305
- end
306
- end
307
-
308
- desc "Create generator jar"
309
- task :create_generator_jar => JRUBY_GENERATOR_JAR
310
-
311
- desc "Create parser and generator jars"
312
- task :create_jar => [ :create_parser_jar, :create_generator_jar ]
313
-
314
- desc "Build all gems and archives for a new release of the jruby extension."
315
- task :build => [ :clean, :version, :jruby_gem ]
316
-
317
- task :release => :build
318
- else
319
- desc "Compiling extension"
320
- task :compile => [ EXT_PARSER_DL, EXT_GENERATOR_DL ]
321
-
322
- file EXT_PARSER_DL => EXT_PARSER_SRC do
323
- cd EXT_PARSER_DIR do
324
- ruby 'extconf.rb'
325
- sh MAKE
326
- end
327
- cp "#{EXT_PARSER_DIR}/parser.#{CONFIG['DLEXT']}", EXT_ROOT_DIR
328
- end
329
-
330
- file EXT_GENERATOR_DL => EXT_GENERATOR_SRC do
331
- cd EXT_GENERATOR_DIR do
332
- ruby 'extconf.rb'
333
- sh MAKE
334
- end
335
- cp "#{EXT_GENERATOR_DIR}/generator.#{CONFIG['DLEXT']}", EXT_ROOT_DIR
336
- end
337
-
338
- desc "Testing library (extension)"
339
- task :test_ext => [ :check_env, :compile, :do_test_ext ]
340
-
341
- UndocumentedTestTask.new do |t|
342
- t.name = 'do_test_ext'
343
- t.libs << 'ext' << 'lib' << 'tests'
344
- t.test_files = FileList['tests/*_test.rb']
345
- t.verbose = true
346
- t.options = '-v'
347
- end
348
-
349
- desc "Generate parser with ragel"
350
- task :ragel => EXT_PARSER_SRC
351
-
352
- desc "Delete the ragel generated C source"
353
- task :ragel_clean do
354
- rm_rf EXT_PARSER_SRC
355
- end
356
-
357
- desc "Update the tags file"
358
- task :tags do
359
- system 'ctags', *Dir['**/*.{rb,c,h,java}']
360
- end
361
-
362
- file EXT_PARSER_SRC => RAGEL_PATH do
363
- cd EXT_PARSER_DIR do
364
- if RAGEL_CODEGEN == 'ragel'
365
- sh "ragel parser.rl -G2 -o parser.c"
366
- else
367
- sh "ragel -x parser.rl | #{RAGEL_CODEGEN} -G2"
368
- end
369
- src = File.read("parser.c").gsub(/[ \t]+$/, '')
370
- src.gsub!(/^static const int (JSON_.*=.*);$/, 'enum {\1};')
371
- File.open("parser.c", "w") {|f| f.print src}
372
- end
373
- end
374
-
375
- desc "Generate diagrams of ragel parser (ps)"
376
- task :ragel_dot_ps do
377
- root = 'diagrams'
378
- specs = []
379
- File.new(RAGEL_PATH).grep(/^\s*machine\s*(\S+);\s*$/) { specs << $1 }
380
- for s in specs
381
- if RAGEL_DOTGEN == 'ragel'
382
- sh "ragel #{RAGEL_PATH} -S#{s} -p -V | dot -Tps -o#{root}/#{s}.ps"
383
- else
384
- sh "ragel -x #{RAGEL_PATH} -S#{s} | #{RAGEL_DOTGEN} -p|dot -Tps -o#{root}/#{s}.ps"
385
- end
386
- end
387
- end
388
-
389
- desc "Generate diagrams of ragel parser (png)"
390
- task :ragel_dot_png do
391
- root = 'diagrams'
392
- specs = []
393
- File.new(RAGEL_PATH).grep(/^\s*machine\s*(\S+);\s*$/) { specs << $1 }
394
- for s in specs
395
- if RAGEL_DOTGEN == 'ragel'
396
- sh "ragel #{RAGEL_PATH} -S#{s} -p -V | dot -Tpng -o#{root}/#{s}.png"
397
- else
398
- sh "ragel -x #{RAGEL_PATH} -S#{s} | #{RAGEL_DOTGEN} -p|dot -Tpng -o#{root}/#{s}.png"
399
- end
400
- end
401
- end
402
-
403
- desc "Generate diagrams of ragel parser"
404
- task :ragel_dot => [ :ragel_dot_png, :ragel_dot_ps ]
405
-
406
- desc "Build all gems and archives for a new release of json and json_pure."
407
- task :build => [ :clean, :gemspec, :package ]
408
-
409
- task :release => :build
410
- end
411
-
412
- desc "Compile in the the source directory"
413
- task :default => [ :clean, :gemspec, :test ]
data/diagrams/.keep DELETED
File without changes