@@ -23,18 +23,20 @@ MAKE = ENV['MAKE'] || %w[gmake make].find { |c| system(c, '-v') }
23
23
PKG_NAME = 'json'
24
24
PKG_TITLE = 'JSON Implementation for Ruby'
25
25
PKG_VERSION = File . read ( 'VERSION' ) . chomp
26
- PKG_FILES = FileList [ "**/*" ] . exclude ( /CVS|pkg|tmp|coverage|Makefile|\. nfs\. / ) . exclude ( /\. (so|bundle|o|class|#{ CONFIG [ 'DLEXT' ] } )$/ )
26
+ PKG_FILES = FileList [ "**/*" ] . exclude ( /CVS|pkg|tmp|coverage|Makefile|\. nfs\. | \. iml \Z / ) . exclude ( /\. (so|bundle|o|class|#{ CONFIG [ 'DLEXT' ] } )$/ )
27
27
28
28
EXT_ROOT_DIR = 'ext/json/ext'
29
29
EXT_PARSER_DIR = "#{ EXT_ROOT_DIR } /parser"
30
30
EXT_PARSER_DL = "#{ EXT_PARSER_DIR } /parser.#{ CONFIG [ 'DLEXT' ] } "
31
+ RAGEL_PATH = "#{ EXT_PARSER_DIR } /parser.rl"
31
32
EXT_PARSER_SRC = "#{ EXT_PARSER_DIR } /parser.c"
32
33
PKG_FILES << EXT_PARSER_SRC
33
34
EXT_GENERATOR_DIR = "#{ EXT_ROOT_DIR } /generator"
34
35
EXT_GENERATOR_DL = "#{ EXT_GENERATOR_DIR } /generator.#{ CONFIG [ 'DLEXT' ] } "
35
36
EXT_GENERATOR_SRC = "#{ EXT_GENERATOR_DIR } /generator.c"
36
37
37
38
JAVA_DIR = "java/src/json/ext"
39
+ JAVA_RAGEL_PATH = "#{ JAVA_DIR } /Parser.rl"
38
40
JAVA_PARSER_SRC = "#{ JAVA_DIR } /Parser.java"
39
41
JAVA_SOURCES = FileList [ "#{ JAVA_DIR } /*.java" ]
40
42
JAVA_CLASSES = [ ]
@@ -43,7 +45,6 @@ JRUBY_GENERATOR_JAR = File.expand_path("lib/json/ext/generator.jar")
43
45
44
46
RAGEL_CODEGEN = %w[ rlcodegen rlgen-cd ragel ] . find { |c | system ( c , '-v' ) }
45
47
RAGEL_DOTGEN = %w[ rlgen-dot rlgen-cd ragel ] . find { |c | system ( c , '-v' ) }
46
- RAGEL_PATH = "#{ EXT_PARSER_DIR } /parser.rl"
47
48
48
49
def myruby ( *args , &block )
49
50
@myruby ||= File . join ( CONFIG [ 'bindir' ] , CONFIG [ 'ruby_install_name' ] )
81
82
task :install => :install_ext
82
83
end
83
84
84
- desc "Compiling extension"
85
- task :compile_ext => [ EXT_PARSER_DL , EXT_GENERATOR_DL ]
86
-
87
- file EXT_PARSER_DL => EXT_PARSER_SRC do
88
- cd EXT_PARSER_DIR do
89
- myruby 'extconf.rb'
90
- sh MAKE
91
- end
92
- cp "#{ EXT_PARSER_DIR } /parser.#{ CONFIG [ 'DLEXT' ] } " , EXT_ROOT_DIR
93
- end
94
-
95
- file EXT_GENERATOR_DL => EXT_GENERATOR_SRC do
96
- cd EXT_GENERATOR_DIR do
97
- myruby 'extconf.rb'
98
- sh MAKE
99
- end
100
- cp "#{ EXT_GENERATOR_DIR } /generator.#{ CONFIG [ 'DLEXT' ] } " , EXT_ROOT_DIR
101
- end
102
-
103
- desc "Generate parser with ragel"
104
- task :ragel => EXT_PARSER_SRC
105
-
106
- desc "Delete the ragel generated C source"
107
- task :ragel_clean do
108
- rm_rf EXT_PARSER_SRC
109
- end
110
-
111
- file EXT_PARSER_SRC => RAGEL_PATH do
112
- cd EXT_PARSER_DIR do
113
- if RAGEL_CODEGEN == 'ragel'
114
- sh "ragel parser.rl -G2 -o parser.c"
115
- else
116
- sh "ragel -x parser.rl | #{ RAGEL_CODEGEN } -G2"
117
- end
118
- end
119
- end
120
-
121
- desc "Generate diagrams of ragel parser (ps)"
122
- task :ragel_dot_ps do
123
- root = 'diagrams'
124
- specs = [ ]
125
- File . new ( RAGEL_PATH ) . grep ( /^\s *machine\s *(\S +);\s *$/ ) { specs << $1 }
126
- for s in specs
127
- if RAGEL_DOTGEN == 'ragel'
128
- sh "ragel #{ RAGEL_PATH } -S#{ s } -p -V | dot -Tps -o#{ root } /#{ s } .ps"
129
- else
130
- sh "ragel -x #{ RAGEL_PATH } -S#{ s } | #{ RAGEL_DOTGEN } -p|dot -Tps -o#{ root } /#{ s } .ps"
131
- end
132
- end
133
- end
134
-
135
- desc "Generate diagrams of ragel parser (png)"
136
- task :ragel_dot_png do
137
- root = 'diagrams'
138
- specs = [ ]
139
- File . new ( RAGEL_PATH ) . grep ( /^\s *machine\s *(\S +);\s *$/ ) { specs << $1 }
140
- for s in specs
141
- if RAGEL_DOTGEN == 'ragel'
142
- sh "ragel #{ RAGEL_PATH } -S#{ s } -p -V | dot -Tpng -o#{ root } /#{ s } .png"
143
- else
144
- sh "ragel -x #{ RAGEL_PATH } -S#{ s } | #{ RAGEL_DOTGEN } -p|dot -Tpng -o#{ root } /#{ s } .png"
145
- end
146
- end
147
- end
148
-
149
- desc "Generate diagrams of ragel parser"
150
- task :ragel_dot => [ :ragel_dot_png , :ragel_dot_ps ]
151
-
152
- desc "Testing library (pure ruby)"
153
- task :test_pure => :clean do
154
- ENV [ 'JSON' ] = 'pure'
155
- ENV [ 'RUBYOPT' ] = "-Ilib #{ ENV [ 'RUBYOPT' ] } "
156
- myruby '-S' , 'testrb' , *Dir [ 'tests/*.rb' ]
157
- end
158
-
159
- desc "Testing library (extension)"
160
- task :test_ext => :compile_ext do
161
- ENV [ 'JSON' ] = 'ext'
162
- ENV [ 'RUBYOPT' ] = "-Iext:lib #{ ENV [ 'RUBYOPT' ] } "
163
- myruby '-S' , 'testrb' , *Dir [ './tests/*.rb' ]
164
- end
165
-
166
- desc "Benchmarking parser"
167
- task :benchmark_parser do
168
- ENV [ 'RUBYOPT' ] = "-Ilib:ext #{ ENV [ 'RUBYOPT' ] } "
169
- myruby 'benchmarks/parser_benchmark.rb'
170
- myruby 'benchmarks/parser2_benchmark.rb'
171
- end
172
-
173
- desc "Benchmarking generator"
174
- task :benchmark_generator do
175
- ENV [ 'RUBYOPT' ] = "-Ilib:ext #{ ENV [ 'RUBYOPT' ] } "
176
- myruby 'benchmarks/generator_benchmark.rb'
177
- myruby 'benchmarks/generator2_benchmark.rb'
178
- end
179
-
180
- desc "Benchmarking library"
181
- task :benchmark => [ :benchmark_parser , :benchmark_generator ]
182
-
183
- desc "Create RDOC documentation"
184
- task :doc => [ :version , EXT_PARSER_SRC ] do
185
- sh "sdoc -o doc -t '#{ PKG_TITLE } ' -m README README lib/json.rb #{ FileList [ 'lib/json/**/*.rb' ] } #{ EXT_PARSER_SRC } #{ EXT_GENERATOR_SRC } "
186
- end
187
-
188
85
if defined? ( Gem ) and defined? ( Rake ::GemPackageTask )
189
86
spec_pure = Gem ::Specification . new do |s |
190
87
s . name = 'json_pure'
@@ -204,7 +101,7 @@ if defined?(Gem) and defined?(Rake::GemPackageTask)
204
101
s . extra_rdoc_files << 'README'
205
102
s . rdoc_options <<
206
103
'--title' << 'JSON implemention for ruby' << '--main' << 'README'
207
- s . test_files . concat Dir [ 'tests/*.rb' ]
104
+ s . test_files . concat Dir [ './ tests/test_ *.rb' ]
208
105
209
106
s . author = "Florian Frank"
210
107
s . email = "flori@ping.de"
@@ -241,7 +138,7 @@ if defined?(Gem) and defined?(Rake::GemPackageTask) and defined?(Rake::Extension
241
138
s . extra_rdoc_files << 'README'
242
139
s . rdoc_options <<
243
140
'--title' << 'JSON implemention for Ruby' << '--main' << 'README'
244
- s . test_files . concat Dir [ 'tests/*.rb' ]
141
+ s . test_files . concat Dir [ './ tests/test_ *.rb' ]
245
142
246
143
s . author = "Florian Frank"
247
144
s . email = "flori@ping.de"
290
187
end
291
188
end
292
189
190
+ desc "Testing library (pure ruby)"
191
+ task :test_pure => :clean do
192
+ ENV [ 'JSON' ] = 'pure'
193
+ ENV [ 'RUBYOPT' ] = "-Ilib #{ ENV [ 'RUBYOPT' ] } "
194
+ myruby '-S' , 'testrb' , *Dir [ './tests/test_*.rb' ]
195
+ end
196
+
197
+ desc "Testing library (pure ruby and extension)"
198
+ task :test => [ :test_pure , :test_ext ]
199
+
200
+
293
201
if defined? ( RUBY_ENGINE ) and RUBY_ENGINE == 'jruby'
294
- file JAVA_PARSER_SRC => RAGEL_PATH do
202
+ file JAVA_PARSER_SRC => JAVA_RAGEL_PATH do
295
203
cd JAVA_DIR do
296
204
if RAGEL_CODEGEN == 'ragel'
297
205
sh "ragel Parser.rl -J -o Parser.java"
@@ -301,6 +209,14 @@ if defined?(RUBY_ENGINE) and RUBY_ENGINE == 'jruby'
301
209
end
302
210
end
303
211
212
+ desc "Generate parser for java with ragel"
213
+ task :ragel => JAVA_PARSER_SRC
214
+
215
+ desc "Delete the ragel generated Java source"
216
+ task :ragel_clean do
217
+ rm_rf JAVA_PARSER_SRC
218
+ end
219
+
304
220
JRUBY_JAR = File . join ( Config ::CONFIG [ "libdir" ] , "jruby.jar" )
305
221
if File . exist? ( JRUBY_JAR )
306
222
JAVA_SOURCES . each do |src |
@@ -315,16 +231,8 @@ if defined?(RUBY_ENGINE) and RUBY_ENGINE == 'jruby'
315
231
warn "WARNING: Cannot find jruby in path => Cannot build jruby extension!"
316
232
end
317
233
318
- desc "Generate parser for java with ragel"
319
- task :ragel_java => JAVA_PARSER_SRC
320
-
321
- desc "Delete the ragel generated Java source"
322
- task :ragel_clean_java do
323
- rm_rf JAVA_PARSER_SRC
324
- end
325
-
326
234
desc "Compiling jruby extension"
327
- task :compile_jruby => JAVA_CLASSES
235
+ task :compile_ext => JAVA_CLASSES
328
236
329
237
desc "Package the jruby gem"
330
238
task :jruby_gem => :create_jar do
@@ -334,12 +242,12 @@ if defined?(RUBY_ENGINE) and RUBY_ENGINE == 'jruby'
334
242
end
335
243
336
244
desc "Testing library (jruby)"
337
- task :test_jruby => :create_jar do
245
+ task :test_ext => :create_jar do
338
246
ENV [ 'JSON' ] = 'ext'
339
- myruby '-S' , 'testrb' , '-Ilib' , *Dir [ 'tests/*.rb' ]
247
+ myruby '-S' , 'testrb' , '-Ilib' , *Dir [ './ tests/test_ *.rb' ]
340
248
end
341
249
342
- file JRUBY_PARSER_JAR => :compile_jruby do
250
+ file JRUBY_PARSER_JAR => :compile_ext do
343
251
cd 'java/src' do
344
252
parser_classes = FileList [
345
253
"json/ext/ByteListTranscoder*.class" ,
@@ -357,7 +265,7 @@ if defined?(RUBY_ENGINE) and RUBY_ENGINE == 'jruby'
357
265
desc "Create parser jar"
358
266
task :create_parser_jar => JRUBY_PARSER_JAR
359
267
360
- file JRUBY_GENERATOR_JAR => :compile_jruby do
268
+ file JRUBY_GENERATOR_JAR => :compile_ext do
361
269
cd 'java/src' do
362
270
generator_classes = FileList [
363
271
"json/ext/ByteListTranscoder*.class" ,
@@ -380,12 +288,103 @@ if defined?(RUBY_ENGINE) and RUBY_ENGINE == 'jruby'
380
288
381
289
desc "Build all gems and archives for a new release of the jruby extension."
382
290
task :release => [ :clean , :version , :jruby_gem ]
383
-
384
- desc "Testing library (jruby extension)"
385
- task :test => :test_jruby
386
291
else
387
- desc "Testing library (pure ruby and extension)"
388
- task :test => [ :test_pure , :test_ext ]
292
+ desc "Compiling extension"
293
+ task :compile_ext => [ EXT_PARSER_DL , EXT_GENERATOR_DL ]
294
+
295
+ file EXT_PARSER_DL => EXT_PARSER_SRC do
296
+ cd EXT_PARSER_DIR do
297
+ myruby 'extconf.rb'
298
+ sh MAKE
299
+ end
300
+ cp "#{ EXT_PARSER_DIR } /parser.#{ CONFIG [ 'DLEXT' ] } " , EXT_ROOT_DIR
301
+ end
302
+
303
+ file EXT_GENERATOR_DL => EXT_GENERATOR_SRC do
304
+ cd EXT_GENERATOR_DIR do
305
+ myruby 'extconf.rb'
306
+ sh MAKE
307
+ end
308
+ cp "#{ EXT_GENERATOR_DIR } /generator.#{ CONFIG [ 'DLEXT' ] } " , EXT_ROOT_DIR
309
+ end
310
+
311
+ desc "Testing library (extension)"
312
+ task :test_ext => :compile_ext do
313
+ ENV [ 'JSON' ] = 'ext'
314
+ ENV [ 'RUBYOPT' ] = "-Iext:lib #{ ENV [ 'RUBYOPT' ] } "
315
+ myruby '-S' , 'testrb' , *Dir [ './tests/test_*.rb' ]
316
+ end
317
+
318
+ desc "Benchmarking parser"
319
+ task :benchmark_parser do
320
+ ENV [ 'RUBYOPT' ] = "-Ilib:ext #{ ENV [ 'RUBYOPT' ] } "
321
+ myruby 'benchmarks/parser_benchmark.rb'
322
+ myruby 'benchmarks/parser2_benchmark.rb'
323
+ end
324
+
325
+ desc "Benchmarking generator"
326
+ task :benchmark_generator do
327
+ ENV [ 'RUBYOPT' ] = "-Ilib:ext #{ ENV [ 'RUBYOPT' ] } "
328
+ myruby 'benchmarks/generator_benchmark.rb'
329
+ myruby 'benchmarks/generator2_benchmark.rb'
330
+ end
331
+
332
+ desc "Benchmarking library"
333
+ task :benchmark => [ :benchmark_parser , :benchmark_generator ]
334
+
335
+ desc "Create RDOC documentation"
336
+ task :doc => [ :version , EXT_PARSER_SRC ] do
337
+ sh "sdoc -o doc -t '#{ PKG_TITLE } ' -m README README lib/json.rb #{ FileList [ 'lib/json/**/*.rb' ] } #{ EXT_PARSER_SRC } #{ EXT_GENERATOR_SRC } "
338
+ end
339
+
340
+ desc "Generate parser with ragel"
341
+ task :ragel => EXT_PARSER_SRC
342
+
343
+ desc "Delete the ragel generated C source"
344
+ task :ragel_clean do
345
+ rm_rf EXT_PARSER_SRC
346
+ end
347
+
348
+ file EXT_PARSER_SRC => RAGEL_PATH do
349
+ cd EXT_PARSER_DIR do
350
+ if RAGEL_CODEGEN == 'ragel'
351
+ sh "ragel parser.rl -G2 -o parser.c"
352
+ else
353
+ sh "ragel -x parser.rl | #{ RAGEL_CODEGEN } -G2"
354
+ end
355
+ end
356
+ end
357
+
358
+ desc "Generate diagrams of ragel parser (ps)"
359
+ task :ragel_dot_ps do
360
+ root = 'diagrams'
361
+ specs = [ ]
362
+ File . new ( RAGEL_PATH ) . grep ( /^\s *machine\s *(\S +);\s *$/ ) { specs << $1 }
363
+ for s in specs
364
+ if RAGEL_DOTGEN == 'ragel'
365
+ sh "ragel #{ RAGEL_PATH } -S#{ s } -p -V | dot -Tps -o#{ root } /#{ s } .ps"
366
+ else
367
+ sh "ragel -x #{ RAGEL_PATH } -S#{ s } | #{ RAGEL_DOTGEN } -p|dot -Tps -o#{ root } /#{ s } .ps"
368
+ end
369
+ end
370
+ end
371
+
372
+ desc "Generate diagrams of ragel parser (png)"
373
+ task :ragel_dot_png do
374
+ root = 'diagrams'
375
+ specs = [ ]
376
+ File . new ( RAGEL_PATH ) . grep ( /^\s *machine\s *(\S +);\s *$/ ) { specs << $1 }
377
+ for s in specs
378
+ if RAGEL_DOTGEN == 'ragel'
379
+ sh "ragel #{ RAGEL_PATH } -S#{ s } -p -V | dot -Tpng -o#{ root } /#{ s } .png"
380
+ else
381
+ sh "ragel -x #{ RAGEL_PATH } -S#{ s } | #{ RAGEL_DOTGEN } -p|dot -Tpng -o#{ root } /#{ s } .png"
382
+ end
383
+ end
384
+ end
385
+
386
+ desc "Generate diagrams of ragel parser"
387
+ task :ragel_dot => [ :ragel_dot_png , :ragel_dot_ps ]
389
388
390
389
desc "Build all gems and archives for a new release of json and json_pure."
391
390
task :release => [ :clean , :version , :cross , :native , :gem , ] do
0 commit comments