fire_and_forget 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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`.
@@ -1,397 +0,0 @@
1
- begin
2
- require 'rake/gempackagetask'
3
- rescue LoadError
4
- end
5
-
6
- begin
7
- require 'rake/extensiontask'
8
- rescue LoadError
9
- warn "WARNING: rake-compiler is not installed. You will not be able to build the json gem until you install it."
10
- end
11
-
12
- require 'rbconfig'
13
- include Config
14
-
15
- require 'rake/clean'
16
- CLOBBER.include Dir['benchmarks/data/*.{dat,log}']
17
- CLEAN.include FileList['diagrams/*.*'], 'doc', 'coverage', 'tmp',
18
- FileList["ext/**/{Makefile,mkmf.log}"], 'build', 'dist', FileList['**/*.rbc'],
19
- FileList["{ext,lib}/**/*.{so,bundle,#{CONFIG['DLEXT']},o,obj,pdb,lib,manifest,exp,def,jar,class}"],
20
- FileList['java/src/**/*.class']
21
-
22
- MAKE = ENV['MAKE'] || %w[gmake make].find { |c| system(c, '-v') }
23
- PKG_NAME = 'json'
24
- PKG_TITLE = 'JSON Implementation for Ruby'
25
- PKG_VERSION = File.read('VERSION').chomp
26
- PKG_FILES = FileList["**/*"].exclude(/CVS|pkg|tmp|coverage|Makefile|\.nfs\.|\.iml\Z/).exclude(/\.(so|bundle|o|class|#{CONFIG['DLEXT']})$/)
27
-
28
- EXT_ROOT_DIR = 'ext/json/ext'
29
- EXT_PARSER_DIR = "#{EXT_ROOT_DIR}/parser"
30
- EXT_PARSER_DL = "#{EXT_PARSER_DIR}/parser.#{CONFIG['DLEXT']}"
31
- RAGEL_PATH = "#{EXT_PARSER_DIR}/parser.rl"
32
- EXT_PARSER_SRC = "#{EXT_PARSER_DIR}/parser.c"
33
- PKG_FILES << EXT_PARSER_SRC
34
- EXT_GENERATOR_DIR = "#{EXT_ROOT_DIR}/generator"
35
- EXT_GENERATOR_DL = "#{EXT_GENERATOR_DIR}/generator.#{CONFIG['DLEXT']}"
36
- EXT_GENERATOR_SRC = "#{EXT_GENERATOR_DIR}/generator.c"
37
-
38
- JAVA_DIR = "java/src/json/ext"
39
- JAVA_RAGEL_PATH = "#{JAVA_DIR}/Parser.rl"
40
- JAVA_PARSER_SRC = "#{JAVA_DIR}/Parser.java"
41
- JAVA_SOURCES = FileList["#{JAVA_DIR}/*.java"]
42
- JAVA_CLASSES = []
43
- JRUBY_PARSER_JAR = File.expand_path("lib/json/ext/parser.jar")
44
- JRUBY_GENERATOR_JAR = File.expand_path("lib/json/ext/generator.jar")
45
-
46
- RAGEL_CODEGEN = %w[rlcodegen rlgen-cd ragel].find { |c| system(c, '-v') }
47
- RAGEL_DOTGEN = %w[rlgen-dot rlgen-cd ragel].find { |c| system(c, '-v') }
48
-
49
- def myruby(*args, &block)
50
- @myruby ||= File.join(CONFIG['bindir'], CONFIG['ruby_install_name'])
51
- options = (Hash === args.last) ? args.pop : {}
52
- if args.length > 1 then
53
- sh(*([@myruby] + args + [options]), &block)
54
- else
55
- sh("#{@myruby} #{args.first}", options, &block)
56
- end
57
- end
58
-
59
- desc "Installing library (pure)"
60
- task :install_pure => :version do
61
- myruby 'install.rb'
62
- end
63
-
64
- task :install_ext_really do
65
- sitearchdir = CONFIG["sitearchdir"]
66
- cd 'ext' do
67
- for file in Dir["json/ext/*.#{CONFIG['DLEXT']}"]
68
- d = File.join(sitearchdir, file)
69
- mkdir_p File.dirname(d)
70
- install(file, d)
71
- end
72
- end
73
- end
74
-
75
- desc "Installing library (extension)"
76
- task :install_ext => [ :compile_ext, :install_pure, :install_ext_really ]
77
-
78
- desc "Installing library (extension)"
79
- if RUBY_PLATFORM =~ /java/
80
- task :install => :install_pure
81
- else
82
- task :install => :install_ext
83
- end
84
-
85
- if defined?(Gem) and defined?(Rake::GemPackageTask)
86
- spec_pure = Gem::Specification.new do |s|
87
- s.name = 'json_pure'
88
- s.version = PKG_VERSION
89
- s.summary = PKG_TITLE
90
- s.description = "This is a JSON implementation in pure Ruby."
91
-
92
- s.files = PKG_FILES
93
-
94
- s.require_path = 'lib'
95
-
96
- s.bindir = "bin"
97
- s.executables = [ "edit_json.rb", "prettify_json.rb" ]
98
- s.default_executable = "edit_json.rb"
99
-
100
- s.has_rdoc = true
101
- s.extra_rdoc_files << 'README'
102
- s.rdoc_options <<
103
- '--title' << 'JSON implemention for ruby' << '--main' << 'README'
104
- s.test_files.concat Dir['./tests/test_*.rb']
105
-
106
- s.author = "Florian Frank"
107
- s.email = "flori@ping.de"
108
- s.homepage = "http://flori.github.com/#{PKG_NAME}"
109
- s.rubyforge_project = "json"
110
- end
111
-
112
- Rake::GemPackageTask.new(spec_pure) do |pkg|
113
- pkg.need_tar = true
114
- pkg.package_files = PKG_FILES
115
- end
116
- end
117
-
118
- if defined?(Gem) and defined?(Rake::GemPackageTask) and defined?(Rake::ExtensionTask)
119
- spec_ext = Gem::Specification.new do |s|
120
- s.name = 'json'
121
- s.version = PKG_VERSION
122
- s.summary = PKG_TITLE
123
- s.description = "This is a JSON implementation as a Ruby extension in C."
124
-
125
- s.files = PKG_FILES
126
-
127
- s.extensions = FileList['ext/**/extconf.rb']
128
-
129
- s.require_path = EXT_ROOT_DIR
130
- s.require_paths << 'ext'
131
- s.require_paths << 'lib'
132
-
133
- s.bindir = "bin"
134
- s.executables = [ "edit_json.rb", "prettify_json.rb" ]
135
- s.default_executable = "edit_json.rb"
136
-
137
- s.has_rdoc = true
138
- s.extra_rdoc_files << 'README'
139
- s.rdoc_options <<
140
- '--title' << 'JSON implemention for Ruby' << '--main' << 'README'
141
- s.test_files.concat Dir['./tests/test_*.rb']
142
-
143
- s.author = "Florian Frank"
144
- s.email = "flori@ping.de"
145
- s.homepage = "http://flori.github.com/#{PKG_NAME}"
146
- s.rubyforge_project = "json"
147
- end
148
-
149
- Rake::GemPackageTask.new(spec_ext) do |pkg|
150
- pkg.need_tar = true
151
- pkg.package_files = PKG_FILES
152
- end
153
-
154
- Rake::ExtensionTask.new do |ext|
155
- ext.name = 'parser'
156
- ext.gem_spec = spec_ext
157
- ext.cross_compile = true
158
- ext.cross_platform = %w[i386-mswin32 i386-mingw32]
159
- ext.ext_dir = 'ext/json/ext/parser'
160
- ext.lib_dir = 'lib/json/ext'
161
- end
162
-
163
- Rake::ExtensionTask.new do |ext|
164
- ext.name = 'generator'
165
- ext.gem_spec = spec_ext
166
- ext.cross_compile = true
167
- ext.cross_platform = %w[i386-mswin32 i386-mingw32]
168
- ext.ext_dir = 'ext/json/ext/generator'
169
- ext.lib_dir = 'lib/json/ext'
170
- end
171
- end
172
-
173
- desc m = "Writing version information for #{PKG_VERSION}"
174
- task :version do
175
- puts m
176
- File.open(File.join('lib', 'json', 'version.rb'), 'w') do |v|
177
- v.puts <<EOT
178
- module JSON
179
- # JSON version
180
- VERSION = '#{PKG_VERSION}'
181
- VERSION_ARRAY = VERSION.split(/\\./).map { |x| x.to_i } # :nodoc:
182
- VERSION_MAJOR = VERSION_ARRAY[0] # :nodoc:
183
- VERSION_MINOR = VERSION_ARRAY[1] # :nodoc:
184
- VERSION_BUILD = VERSION_ARRAY[2] # :nodoc:
185
- end
186
- EOT
187
- end
188
- end
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
-
201
- if defined?(RUBY_ENGINE) and RUBY_ENGINE == 'jruby'
202
- file JAVA_PARSER_SRC => JAVA_RAGEL_PATH do
203
- cd JAVA_DIR do
204
- if RAGEL_CODEGEN == 'ragel'
205
- sh "ragel Parser.rl -J -o Parser.java"
206
- else
207
- sh "ragel -x Parser.rl | #{RAGEL_CODEGEN} -J"
208
- end
209
- end
210
- end
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
-
220
- JRUBY_JAR = File.join(Config::CONFIG["libdir"], "jruby.jar")
221
- if File.exist?(JRUBY_JAR)
222
- JAVA_SOURCES.each do |src|
223
- classpath = (Dir['java/lib/*.jar'] << 'java/src' << JRUBY_JAR) * ':'
224
- obj = src.sub(/\.java\Z/, '.class')
225
- file obj => src do
226
- sh 'javac', '-classpath', classpath, '-source', '1.5', src
227
- end
228
- JAVA_CLASSES << obj
229
- end
230
- else
231
- warn "WARNING: Cannot find jruby in path => Cannot build jruby extension!"
232
- end
233
-
234
- desc "Compiling jruby extension"
235
- task :compile_ext => JAVA_CLASSES
236
-
237
- desc "Package the jruby gem"
238
- task :jruby_gem => :create_jar do
239
- sh 'gem build json-java.gemspec'
240
- mkdir_p 'pkg'
241
- mv "json-#{PKG_VERSION}-java.gem", 'pkg'
242
- end
243
-
244
- desc "Testing library (jruby)"
245
- task :test_ext => :create_jar do
246
- ENV['JSON'] = 'ext'
247
- myruby '-S', 'testrb', '-Ilib', *Dir['./tests/test_*.rb']
248
- end
249
-
250
- file JRUBY_PARSER_JAR => :compile_ext do
251
- cd 'java/src' do
252
- parser_classes = FileList[
253
- "json/ext/ByteListTranscoder*.class",
254
- "json/ext/OptionsReader*.class",
255
- "json/ext/Parser*.class",
256
- "json/ext/RuntimeInfo*.class",
257
- "json/ext/StringDecoder*.class",
258
- "json/ext/Utils*.class"
259
- ]
260
- sh 'jar', 'cf', File.basename(JRUBY_PARSER_JAR), *parser_classes
261
- mv File.basename(JRUBY_PARSER_JAR), File.dirname(JRUBY_PARSER_JAR)
262
- end
263
- end
264
-
265
- desc "Create parser jar"
266
- task :create_parser_jar => JRUBY_PARSER_JAR
267
-
268
- file JRUBY_GENERATOR_JAR => :compile_ext do
269
- cd 'java/src' do
270
- generator_classes = FileList[
271
- "json/ext/ByteListTranscoder*.class",
272
- "json/ext/OptionsReader*.class",
273
- "json/ext/Generator*.class",
274
- "json/ext/RuntimeInfo*.class",
275
- "json/ext/StringEncoder*.class",
276
- "json/ext/Utils*.class"
277
- ]
278
- sh 'jar', 'cf', File.basename(JRUBY_GENERATOR_JAR), *generator_classes
279
- mv File.basename(JRUBY_GENERATOR_JAR), File.dirname(JRUBY_GENERATOR_JAR)
280
- end
281
- end
282
-
283
- desc "Create generator jar"
284
- task :create_generator_jar => JRUBY_GENERATOR_JAR
285
-
286
- desc "Create parser and generator jars"
287
- task :create_jar => [ :create_parser_jar, :create_generator_jar ]
288
-
289
- desc "Build all gems and archives for a new release of the jruby extension."
290
- task :release => [ :clean, :version, :jruby_gem ]
291
- else
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 ]
388
-
389
- desc "Build all gems and archives for a new release of json and json_pure."
390
- task :release => [ :clean, :version, :cross, :native, :gem, ] do
391
- sh "#$0 clean native gem"
392
- sh "#$0 clean package"
393
- end
394
- end
395
-
396
- desc "Compile in the the source directory"
397
- task :default => [ :version ]
@@ -1 +0,0 @@
1
-
@@ -1 +0,0 @@
1
- 1.5.0
@@ -1,147 +0,0 @@
1
- # This file contains implementations of ruby core's custom objects for
2
- # serialisation/deserialisation.
3
-
4
- unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
5
- require 'json'
6
- end
7
- require 'date'
8
-
9
- class Symbol
10
- def to_json(*a)
11
- {
12
- JSON.create_id => self.class.name,
13
- 's' => to_s,
14
- }.to_json(*a)
15
- end
16
-
17
- def self.json_create(o)
18
- o['s'].to_sym
19
- end
20
- end
21
-
22
- class Time
23
- def self.json_create(object)
24
- if usec = object.delete('u') # used to be tv_usec -> tv_nsec
25
- object['n'] = usec * 1000
26
- end
27
- if respond_to?(:tv_nsec)
28
- at(*object.values_at('s', 'n'))
29
- else
30
- at(object['s'], object['n'] / 1000)
31
- end
32
- end
33
-
34
- def to_json(*args)
35
- {
36
- JSON.create_id => self.class.name,
37
- 's' => tv_sec,
38
- 'n' => respond_to?(:tv_nsec) ? tv_nsec : tv_usec * 1000
39
- }.to_json(*args)
40
- end
41
- end
42
-
43
- class Date
44
- def self.json_create(object)
45
- civil(*object.values_at('y', 'm', 'd', 'sg'))
46
- end
47
-
48
- alias start sg unless method_defined?(:start)
49
-
50
- def to_json(*args)
51
- {
52
- JSON.create_id => self.class.name,
53
- 'y' => year,
54
- 'm' => month,
55
- 'd' => day,
56
- 'sg' => start,
57
- }.to_json(*args)
58
- end
59
- end
60
-
61
- class DateTime
62
- def self.json_create(object)
63
- args = object.values_at('y', 'm', 'd', 'H', 'M', 'S')
64
- of_a, of_b = object['of'].split('/')
65
- if of_b and of_b != '0'
66
- args << Rational(of_a.to_i, of_b.to_i)
67
- else
68
- args << of_a
69
- end
70
- args << object['sg']
71
- civil(*args)
72
- end
73
-
74
- alias start sg unless method_defined?(:start)
75
-
76
- def to_json(*args)
77
- {
78
- JSON.create_id => self.class.name,
79
- 'y' => year,
80
- 'm' => month,
81
- 'd' => day,
82
- 'H' => hour,
83
- 'M' => min,
84
- 'S' => sec,
85
- 'of' => offset.to_s,
86
- 'sg' => start,
87
- }.to_json(*args)
88
- end
89
- end
90
-
91
- class Range
92
- def self.json_create(object)
93
- new(*object['a'])
94
- end
95
-
96
- def to_json(*args)
97
- {
98
- JSON.create_id => self.class.name,
99
- 'a' => [ first, last, exclude_end? ]
100
- }.to_json(*args)
101
- end
102
- end
103
-
104
- class Struct
105
- def self.json_create(object)
106
- new(*object['v'])
107
- end
108
-
109
- def to_json(*args)
110
- klass = self.class.name
111
- klass.to_s.empty? and raise JSON::JSONError, "Only named structs are supported!"
112
- {
113
- JSON.create_id => klass,
114
- 'v' => values,
115
- }.to_json(*args)
116
- end
117
- end
118
-
119
- class Exception
120
- def self.json_create(object)
121
- result = new(object['m'])
122
- result.set_backtrace object['b']
123
- result
124
- end
125
-
126
- def to_json(*args)
127
- {
128
- JSON.create_id => self.class.name,
129
- 'm' => message,
130
- 'b' => backtrace,
131
- }.to_json(*args)
132
- end
133
- end
134
-
135
- class Regexp
136
- def self.json_create(object)
137
- new(object['s'], object['o'])
138
- end
139
-
140
- def to_json(*)
141
- {
142
- JSON.create_id => self.class.name,
143
- 'o' => options,
144
- 's' => source,
145
- }.to_json
146
- end
147
- end
@@ -1,8 +0,0 @@
1
- # This file used to implementations of rails custom objects for
2
- # serialisation/deserialisation and is obsoleted now.
3
-
4
- unless defined?(::JSON::JSON_LOADED) and ::JSON::JSON_LOADED
5
- require 'json'
6
- end
7
-
8
- $DEBUG and warn "required json/add/rails which is obsolete now!"