json 2.2.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 (91) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +71 -5
  3. data/LICENSE +56 -0
  4. data/README.md +20 -4
  5. data/VERSION +1 -1
  6. data/ext/json/ext/generator/generator.c +222 -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 +2980 -1764
  10. data/ext/json/ext/parser/parser.h +6 -1
  11. data/ext/json/ext/parser/parser.rl +138 -43
  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/rational.rb +2 -3
  17. data/lib/json/add/regexp.rb +2 -2
  18. data/lib/json/common.rb +372 -125
  19. data/lib/json/pure/generator.rb +31 -10
  20. data/lib/json/pure/parser.rb +32 -6
  21. data/lib/json/version.rb +1 -1
  22. data/lib/json.rb +549 -29
  23. metadata +18 -109
  24. data/.gitignore +0 -17
  25. data/.travis.yml +0 -23
  26. data/Gemfile +0 -14
  27. data/README-json-jruby.md +0 -33
  28. data/Rakefile +0 -408
  29. data/diagrams/.keep +0 -0
  30. data/install.rb +0 -23
  31. data/java/src/json/ext/ByteListTranscoder.java +0 -166
  32. data/java/src/json/ext/Generator.java +0 -443
  33. data/java/src/json/ext/GeneratorMethods.java +0 -231
  34. data/java/src/json/ext/GeneratorService.java +0 -42
  35. data/java/src/json/ext/GeneratorState.java +0 -490
  36. data/java/src/json/ext/OptionsReader.java +0 -113
  37. data/java/src/json/ext/Parser.java +0 -2362
  38. data/java/src/json/ext/Parser.rl +0 -893
  39. data/java/src/json/ext/ParserService.java +0 -34
  40. data/java/src/json/ext/RuntimeInfo.java +0 -116
  41. data/java/src/json/ext/StringDecoder.java +0 -166
  42. data/java/src/json/ext/StringEncoder.java +0 -111
  43. data/java/src/json/ext/Utils.java +0 -88
  44. data/json-java.gemspec +0 -38
  45. data/json_pure.gemspec +0 -38
  46. data/lib/json/ext/.keep +0 -0
  47. data/references/rfc7159.txt +0 -899
  48. data/tests/fixtures/fail10.json +0 -1
  49. data/tests/fixtures/fail11.json +0 -1
  50. data/tests/fixtures/fail12.json +0 -1
  51. data/tests/fixtures/fail13.json +0 -1
  52. data/tests/fixtures/fail14.json +0 -1
  53. data/tests/fixtures/fail18.json +0 -1
  54. data/tests/fixtures/fail19.json +0 -1
  55. data/tests/fixtures/fail2.json +0 -1
  56. data/tests/fixtures/fail20.json +0 -1
  57. data/tests/fixtures/fail21.json +0 -1
  58. data/tests/fixtures/fail22.json +0 -1
  59. data/tests/fixtures/fail23.json +0 -1
  60. data/tests/fixtures/fail24.json +0 -1
  61. data/tests/fixtures/fail25.json +0 -1
  62. data/tests/fixtures/fail27.json +0 -2
  63. data/tests/fixtures/fail28.json +0 -2
  64. data/tests/fixtures/fail3.json +0 -1
  65. data/tests/fixtures/fail4.json +0 -1
  66. data/tests/fixtures/fail5.json +0 -1
  67. data/tests/fixtures/fail6.json +0 -1
  68. data/tests/fixtures/fail7.json +0 -1
  69. data/tests/fixtures/fail8.json +0 -1
  70. data/tests/fixtures/fail9.json +0 -1
  71. data/tests/fixtures/obsolete_fail1.json +0 -1
  72. data/tests/fixtures/pass1.json +0 -56
  73. data/tests/fixtures/pass15.json +0 -1
  74. data/tests/fixtures/pass16.json +0 -1
  75. data/tests/fixtures/pass17.json +0 -1
  76. data/tests/fixtures/pass2.json +0 -1
  77. data/tests/fixtures/pass26.json +0 -1
  78. data/tests/fixtures/pass3.json +0 -6
  79. data/tests/json_addition_test.rb +0 -203
  80. data/tests/json_common_interface_test.rb +0 -126
  81. data/tests/json_encoding_test.rb +0 -107
  82. data/tests/json_ext_parser_test.rb +0 -15
  83. data/tests/json_fixtures_test.rb +0 -32
  84. data/tests/json_generator_test.rb +0 -377
  85. data/tests/json_generic_object_test.rb +0 -82
  86. data/tests/json_parser_test.rb +0 -472
  87. data/tests/json_string_matching_test.rb +0 -38
  88. data/tests/test_helper.rb +0 -17
  89. data/tools/diff.sh +0 -18
  90. data/tools/fuzz.rb +0 -131
  91. 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.2.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-02-21 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,16 +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
- - diagrams/.keep
61
27
  - ext/json/ext/fbuffer/fbuffer.h
62
28
  - ext/json/ext/generator/depend
63
29
  - ext/json/ext/generator/extconf.rb
@@ -69,23 +35,7 @@ files:
69
35
  - ext/json/ext/parser/parser.h
70
36
  - ext/json/ext/parser/parser.rl
71
37
  - ext/json/extconf.rb
72
- - install.rb
73
- - java/src/json/ext/ByteListTranscoder.java
74
- - java/src/json/ext/Generator.java
75
- - java/src/json/ext/GeneratorMethods.java
76
- - java/src/json/ext/GeneratorService.java
77
- - java/src/json/ext/GeneratorState.java
78
- - java/src/json/ext/OptionsReader.java
79
- - java/src/json/ext/Parser.java
80
- - java/src/json/ext/Parser.rl
81
- - java/src/json/ext/ParserService.java
82
- - java/src/json/ext/RuntimeInfo.java
83
- - java/src/json/ext/StringDecoder.java
84
- - java/src/json/ext/StringEncoder.java
85
- - java/src/json/ext/Utils.java
86
- - json-java.gemspec
87
38
  - json.gemspec
88
- - json_pure.gemspec
89
39
  - lib/json.rb
90
40
  - lib/json/add/bigdecimal.rb
91
41
  - lib/json/add/complex.rb
@@ -103,65 +53,25 @@ files:
103
53
  - lib/json/add/time.rb
104
54
  - lib/json/common.rb
105
55
  - lib/json/ext.rb
106
- - lib/json/ext/.keep
107
56
  - lib/json/generic_object.rb
108
57
  - lib/json/pure.rb
109
58
  - lib/json/pure/generator.rb
110
59
  - lib/json/pure/parser.rb
111
60
  - lib/json/version.rb
112
- - references/rfc7159.txt
113
- - tests/fixtures/fail10.json
114
- - tests/fixtures/fail11.json
115
- - tests/fixtures/fail12.json
116
- - tests/fixtures/fail13.json
117
- - tests/fixtures/fail14.json
118
- - tests/fixtures/fail18.json
119
- - tests/fixtures/fail19.json
120
- - tests/fixtures/fail2.json
121
- - tests/fixtures/fail20.json
122
- - tests/fixtures/fail21.json
123
- - tests/fixtures/fail22.json
124
- - tests/fixtures/fail23.json
125
- - tests/fixtures/fail24.json
126
- - tests/fixtures/fail25.json
127
- - tests/fixtures/fail27.json
128
- - tests/fixtures/fail28.json
129
- - tests/fixtures/fail3.json
130
- - tests/fixtures/fail4.json
131
- - tests/fixtures/fail5.json
132
- - tests/fixtures/fail6.json
133
- - tests/fixtures/fail7.json
134
- - tests/fixtures/fail8.json
135
- - tests/fixtures/fail9.json
136
- - tests/fixtures/obsolete_fail1.json
137
- - tests/fixtures/pass1.json
138
- - tests/fixtures/pass15.json
139
- - tests/fixtures/pass16.json
140
- - tests/fixtures/pass17.json
141
- - tests/fixtures/pass2.json
142
- - tests/fixtures/pass26.json
143
- - tests/fixtures/pass3.json
144
- - tests/json_addition_test.rb
145
- - tests/json_common_interface_test.rb
146
- - tests/json_encoding_test.rb
147
- - tests/json_ext_parser_test.rb
148
- - tests/json_fixtures_test.rb
149
- - tests/json_generator_test.rb
150
- - tests/json_generic_object_test.rb
151
- - tests/json_parser_test.rb
152
- - tests/json_string_matching_test.rb
153
- - tests/test_helper.rb
154
- - tools/diff.sh
155
- - tools/fuzz.rb
156
- - tools/server.rb
157
61
  homepage: http://flori.github.com/json
158
62
  licenses:
159
63
  - Ruby
160
- metadata: {}
161
- 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:
162
72
  rdoc_options:
163
73
  - "--title"
164
- - JSON implemention for Ruby
74
+ - JSON implementation for Ruby
165
75
  - "--main"
166
76
  - README.md
167
77
  require_paths:
@@ -170,16 +80,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
170
80
  requirements:
171
81
  - - ">="
172
82
  - !ruby/object:Gem::Version
173
- version: '1.9'
83
+ version: '2.3'
174
84
  required_rubygems_version: !ruby/object:Gem::Requirement
175
85
  requirements:
176
86
  - - ">="
177
87
  - !ruby/object:Gem::Version
178
88
  version: '0'
179
89
  requirements: []
180
- rubygems_version: 3.0.2
181
- signing_key:
90
+ rubygems_version: 3.3.13
91
+ signing_key:
182
92
  specification_version: 4
183
93
  summary: JSON Implementation for Ruby
184
- test_files:
185
- - "./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,23 +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
12
- - 2.4
13
- - 2.5
14
- - 2.6
15
- - ruby-head
16
- - jruby
17
- matrix:
18
- allow_failures:
19
- - rvm: 1.9.3
20
- - rvm: ruby-head
21
- - rvm: jruby
22
- script: "bundle exec rake"
23
- 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,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.6', '-target', '1.6', 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/diagrams/.keep DELETED
File without changes