json 1.8.6 → 2.5.1

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 (92) hide show
  1. checksums.yaml +5 -5
  2. data/{CHANGES → CHANGES.md} +234 -95
  3. data/Gemfile +10 -3
  4. data/LICENSE +56 -0
  5. data/README.md +187 -107
  6. data/VERSION +1 -1
  7. data/ext/json/ext/fbuffer/fbuffer.h +0 -3
  8. data/ext/json/ext/generator/generator.c +227 -101
  9. data/ext/json/ext/generator/generator.h +5 -8
  10. data/ext/json/ext/parser/extconf.rb +28 -0
  11. data/ext/json/ext/parser/parser.c +420 -481
  12. data/ext/json/ext/parser/parser.h +5 -5
  13. data/ext/json/ext/parser/parser.rl +148 -172
  14. data/ext/json/extconf.rb +1 -1
  15. data/json.gemspec +0 -0
  16. data/lib/json.rb +550 -29
  17. data/lib/json/add/bigdecimal.rb +3 -2
  18. data/lib/json/add/complex.rb +4 -4
  19. data/lib/json/add/core.rb +1 -0
  20. data/lib/json/add/date.rb +1 -1
  21. data/lib/json/add/date_time.rb +1 -1
  22. data/lib/json/add/exception.rb +1 -1
  23. data/lib/json/add/ostruct.rb +3 -3
  24. data/lib/json/add/range.rb +1 -1
  25. data/lib/json/add/rational.rb +3 -3
  26. data/lib/json/add/regexp.rb +3 -3
  27. data/lib/json/add/set.rb +29 -0
  28. data/lib/json/add/struct.rb +1 -1
  29. data/lib/json/add/symbol.rb +1 -1
  30. data/lib/json/add/time.rb +1 -1
  31. data/lib/json/common.rb +381 -162
  32. data/lib/json/ext.rb +0 -6
  33. data/lib/json/generic_object.rb +5 -4
  34. data/lib/json/pure.rb +2 -8
  35. data/lib/json/pure/generator.rb +73 -124
  36. data/lib/json/pure/parser.rb +62 -84
  37. data/lib/json/version.rb +2 -1
  38. data/tests/fixtures/fail29.json +1 -0
  39. data/tests/fixtures/fail30.json +1 -0
  40. data/tests/fixtures/fail31.json +1 -0
  41. data/tests/fixtures/fail32.json +1 -0
  42. data/tests/fixtures/obsolete_fail1.json +1 -0
  43. data/tests/{test_json_addition.rb → json_addition_test.rb} +28 -25
  44. data/tests/json_common_interface_test.rb +169 -0
  45. data/tests/json_encoding_test.rb +107 -0
  46. data/tests/json_ext_parser_test.rb +15 -0
  47. data/tests/{test_json_fixtures.rb → json_fixtures_test.rb} +13 -8
  48. data/tests/{test_json_generate.rb → json_generator_test.rb} +98 -47
  49. data/tests/{test_json_generic_object.rb → json_generic_object_test.rb} +15 -8
  50. data/tests/json_parser_test.rb +497 -0
  51. data/tests/json_string_matching_test.rb +38 -0
  52. data/tests/lib/core_assertions.rb +763 -0
  53. data/tests/lib/envutil.rb +365 -0
  54. data/tests/lib/find_executable.rb +22 -0
  55. data/tests/lib/helper.rb +4 -0
  56. data/tests/ractor_test.rb +30 -0
  57. data/tests/test_helper.rb +17 -0
  58. metadata +43 -69
  59. data/.gitignore +0 -17
  60. data/.travis.yml +0 -18
  61. data/README-json-jruby.markdown +0 -33
  62. data/Rakefile +0 -402
  63. data/TODO +0 -1
  64. data/data/example.json +0 -1
  65. data/data/index.html +0 -38
  66. data/data/prototype.js +0 -4184
  67. data/diagrams/.keep +0 -0
  68. data/install.rb +0 -23
  69. data/java/src/json/ext/ByteListTranscoder.java +0 -166
  70. data/java/src/json/ext/Generator.java +0 -446
  71. data/java/src/json/ext/GeneratorMethods.java +0 -231
  72. data/java/src/json/ext/GeneratorService.java +0 -42
  73. data/java/src/json/ext/GeneratorState.java +0 -542
  74. data/java/src/json/ext/OptionsReader.java +0 -113
  75. data/java/src/json/ext/Parser.java +0 -2644
  76. data/java/src/json/ext/Parser.rl +0 -968
  77. data/java/src/json/ext/ParserService.java +0 -34
  78. data/java/src/json/ext/RuntimeInfo.java +0 -120
  79. data/java/src/json/ext/StringDecoder.java +0 -166
  80. data/java/src/json/ext/StringEncoder.java +0 -111
  81. data/java/src/json/ext/Utils.java +0 -88
  82. data/json-java.gemspec +0 -38
  83. data/json_pure.gemspec +0 -37
  84. data/tests/fixtures/fail1.json +0 -1
  85. data/tests/setup_variant.rb +0 -11
  86. data/tests/test_json.rb +0 -519
  87. data/tests/test_json_encoding.rb +0 -65
  88. data/tests/test_json_string_matching.rb +0 -39
  89. data/tests/test_json_unicode.rb +0 -72
  90. data/tools/diff.sh +0 -18
  91. data/tools/fuzz.rb +0 -139
  92. data/tools/server.rb +0 -62
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,18 +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.0
13
- matrix:
14
- include:
15
- - rvm: jruby
16
- env: JRUBY_OPTS="--2.0"
17
- script: "bundle exec rake"
18
- sudo: false
@@ -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,402 +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
- end
99
-
100
- desc 'Creates a json_pure.gemspec file'
101
- task :gemspec_pure => :version do
102
- File.open('json_pure.gemspec', 'w') do |gemspec|
103
- gemspec.write spec_pure.to_ruby
104
- end
105
- end
106
-
107
- Gem::PackageTask.new(spec_pure) do |pkg|
108
- pkg.need_tar = true
109
- pkg.package_files = PKG_FILES
110
- end
111
-
112
- spec_ext = Gem::Specification.new do |s|
113
- s.name = 'json'
114
- s.version = PKG_VERSION
115
- s.summary = PKG_TITLE
116
- s.description = "This is a JSON implementation as a Ruby extension in C."
117
-
118
- s.files = PKG_FILES
119
-
120
- s.extensions = FileList['ext/**/extconf.rb']
121
-
122
- s.require_path = 'lib'
123
- s.add_development_dependency 'rake'
124
- s.add_development_dependency 'test-unit', '~> 2.0'
125
-
126
- s.extra_rdoc_files << 'README.md'
127
- s.rdoc_options <<
128
- '--title' << 'JSON implemention for Ruby' << '--main' << 'README.md'
129
- s.test_files.concat Dir['./tests/test_*.rb']
130
-
131
- s.author = "Florian Frank"
132
- s.email = "flori@ping.de"
133
- s.homepage = "http://flori.github.com/#{PKG_NAME}"
134
- s.license = 'Ruby'
135
- end
136
-
137
- desc 'Creates a json.gemspec file'
138
- task :gemspec_ext => :version do
139
- File.open('json.gemspec', 'w') do |gemspec|
140
- gemspec.write spec_ext.to_ruby
141
- end
142
- end
143
-
144
- Gem::PackageTask.new(spec_ext) do |pkg|
145
- pkg.need_tar = true
146
- pkg.package_files = PKG_FILES
147
- end
148
-
149
-
150
- desc 'Create all gemspec files'
151
- task :gemspec => [ :gemspec_pure, :gemspec_ext ]
152
- end
153
-
154
- desc m = "Writing version information for #{PKG_VERSION}"
155
- task :version do
156
- puts m
157
- File.open(File.join('lib', 'json', 'version.rb'), 'w') do |v|
158
- v.puts <<EOT
159
- module JSON
160
- # JSON version
161
- VERSION = '#{PKG_VERSION}'
162
- VERSION_ARRAY = VERSION.split(/\\./).map { |x| x.to_i } # :nodoc:
163
- VERSION_MAJOR = VERSION_ARRAY[0] # :nodoc:
164
- VERSION_MINOR = VERSION_ARRAY[1] # :nodoc:
165
- VERSION_BUILD = VERSION_ARRAY[2] # :nodoc:
166
- end
167
- EOT
168
- end
169
- end
170
-
171
- desc "Testing library (pure ruby)"
172
- task :test_pure => [ :clean, :do_test_pure ]
173
-
174
- UndocumentedTestTask.new do |t|
175
- t.name = 'do_test_pure'
176
- t.libs << 'lib'
177
- t.test_files = FileList['tests/test_*.rb']
178
- t.verbose = true
179
- t.options = '-v'
180
- end
181
-
182
- desc "Testing library (pure ruby and extension)"
183
- task :test do
184
- sh "env JSON=pure #{BUNDLE} exec rake test_pure" or exit 1
185
- sh "env JSON=ext #{BUNDLE} exec rake test_ext" or exit 1
186
- end
187
-
188
- namespace :gems do
189
- desc 'Install all development gems'
190
- task :install do
191
- sh "#{BUNDLE}"
192
- end
193
- end
194
-
195
- if defined?(RUBY_ENGINE) and RUBY_ENGINE == 'jruby'
196
- if ENV.key?('JAVA_HOME')
197
- warn " *** JAVA_HOME was set to #{ENV['JAVA_HOME'].inspect}"
198
- elsif File.directory?(local_java = '/usr/local/java/jdk') ||
199
- File.directory?(local_java = '/usr/lib/jvm/java-6-openjdk')
200
- then
201
- ENV['JAVA_HOME'] = local_java
202
- end
203
- if ENV['JAVA_HOME']
204
- warn " *** JAVA_HOME is set to #{ENV['JAVA_HOME'].inspect}"
205
- ENV['PATH'] = ENV['PATH'].split(/:/).unshift(java_path = "#{ENV['JAVA_HOME']}/bin") * ':'
206
- warn " *** java binaries are assumed to be in #{java_path.inspect}"
207
- else
208
- warn " *** JAVA_HOME was not set or could not be guessed!"
209
- exit 1
210
- end
211
-
212
- file JAVA_PARSER_SRC => JAVA_RAGEL_PATH do
213
- cd JAVA_DIR do
214
- if RAGEL_CODEGEN == 'ragel'
215
- sh "ragel Parser.rl -J -o Parser.java"
216
- else
217
- sh "ragel -x Parser.rl | #{RAGEL_CODEGEN} -J"
218
- end
219
- end
220
- end
221
-
222
- desc "Generate parser for java with ragel"
223
- task :ragel => JAVA_PARSER_SRC
224
-
225
- desc "Delete the ragel generated Java source"
226
- task :ragel_clean do
227
- rm_rf JAVA_PARSER_SRC
228
- end
229
-
230
- JRUBY_JAR = File.join(CONFIG["libdir"], "jruby.jar")
231
- if File.exist?(JRUBY_JAR)
232
- JAVA_SOURCES.each do |src|
233
- classpath = (Dir['java/lib/*.jar'] << 'java/src' << JRUBY_JAR) * ':'
234
- obj = src.sub(/\.java\Z/, '.class')
235
- file obj => src do
236
- sh 'javac', '-classpath', classpath, '-source', '1.5', '-target', '1.5', src
237
- end
238
- JAVA_CLASSES << obj
239
- end
240
- else
241
- warn "WARNING: Cannot find jruby in path => Cannot build jruby extension!"
242
- end
243
-
244
- desc "Compiling jruby extension"
245
- task :compile => JAVA_CLASSES
246
-
247
- desc "Package the jruby gem"
248
- task :jruby_gem => :create_jar do
249
- sh 'gem build json-java.gemspec'
250
- mkdir_p 'pkg'
251
- mv "json-#{PKG_VERSION}-java.gem", 'pkg'
252
- end
253
-
254
- desc "Testing library (jruby)"
255
- task :test_ext => [ :create_jar, :do_test_ext ]
256
-
257
- UndocumentedTestTask.new do |t|
258
- t.name = 'do_test_ext'
259
- t.libs << 'lib'
260
- t.test_files = FileList['tests/test_*.rb']
261
- t.verbose = true
262
- t.options = '-v'
263
- end
264
-
265
- file JRUBY_PARSER_JAR => :compile do
266
- cd 'java/src' do
267
- parser_classes = FileList[
268
- "json/ext/ByteListTranscoder*.class",
269
- "json/ext/OptionsReader*.class",
270
- "json/ext/Parser*.class",
271
- "json/ext/RuntimeInfo*.class",
272
- "json/ext/StringDecoder*.class",
273
- "json/ext/Utils*.class"
274
- ]
275
- sh 'jar', 'cf', File.basename(JRUBY_PARSER_JAR), *parser_classes
276
- mv File.basename(JRUBY_PARSER_JAR), File.dirname(JRUBY_PARSER_JAR)
277
- end
278
- end
279
-
280
- desc "Create parser jar"
281
- task :create_parser_jar => JRUBY_PARSER_JAR
282
-
283
- file JRUBY_GENERATOR_JAR => :compile do
284
- cd 'java/src' do
285
- generator_classes = FileList[
286
- "json/ext/ByteListTranscoder*.class",
287
- "json/ext/OptionsReader*.class",
288
- "json/ext/Generator*.class",
289
- "json/ext/RuntimeInfo*.class",
290
- "json/ext/StringEncoder*.class",
291
- "json/ext/Utils*.class"
292
- ]
293
- sh 'jar', 'cf', File.basename(JRUBY_GENERATOR_JAR), *generator_classes
294
- mv File.basename(JRUBY_GENERATOR_JAR), File.dirname(JRUBY_GENERATOR_JAR)
295
- end
296
- end
297
-
298
- desc "Create generator jar"
299
- task :create_generator_jar => JRUBY_GENERATOR_JAR
300
-
301
- desc "Create parser and generator jars"
302
- task :create_jar => [ :create_parser_jar, :create_generator_jar ]
303
-
304
- desc "Build all gems and archives for a new release of the jruby extension."
305
- task :build => [ :clean, :version, :jruby_gem ]
306
-
307
- task :release => :build
308
- else
309
- desc "Compiling extension"
310
- task :compile => [ EXT_PARSER_DL, EXT_GENERATOR_DL ]
311
-
312
- file EXT_PARSER_DL => EXT_PARSER_SRC do
313
- cd EXT_PARSER_DIR do
314
- ruby 'extconf.rb'
315
- sh MAKE
316
- end
317
- cp "#{EXT_PARSER_DIR}/parser.#{CONFIG['DLEXT']}", EXT_ROOT_DIR
318
- end
319
-
320
- file EXT_GENERATOR_DL => EXT_GENERATOR_SRC do
321
- cd EXT_GENERATOR_DIR do
322
- ruby 'extconf.rb'
323
- sh MAKE
324
- end
325
- cp "#{EXT_GENERATOR_DIR}/generator.#{CONFIG['DLEXT']}", EXT_ROOT_DIR
326
- end
327
-
328
- desc "Testing library (extension)"
329
- task :test_ext => [ :compile, :do_test_ext ]
330
-
331
- UndocumentedTestTask.new do |t|
332
- t.name = 'do_test_ext'
333
- t.libs << 'ext' << 'lib'
334
- t.test_files = FileList['tests/test_*.rb']
335
- t.verbose = true
336
- t.options = '-v'
337
- end
338
-
339
- desc "Generate parser with ragel"
340
- task :ragel => EXT_PARSER_SRC
341
-
342
- desc "Delete the ragel generated C source"
343
- task :ragel_clean do
344
- rm_rf EXT_PARSER_SRC
345
- end
346
-
347
- desc "Update the tags file"
348
- task :tags do
349
- system 'ctags', *Dir['**/*.{rb,c,h,java}']
350
- end
351
-
352
- file EXT_PARSER_SRC => RAGEL_PATH do
353
- cd EXT_PARSER_DIR do
354
- if RAGEL_CODEGEN == 'ragel'
355
- sh "ragel parser.rl -G2 -o parser.c"
356
- else
357
- sh "ragel -x parser.rl | #{RAGEL_CODEGEN} -G2"
358
- end
359
- src = File.read("parser.c").gsub(/[ \t]+$/, '')
360
- File.open("parser.c", "w") {|f| f.print src}
361
- end
362
- end
363
-
364
- desc "Generate diagrams of ragel parser (ps)"
365
- task :ragel_dot_ps do
366
- root = 'diagrams'
367
- specs = []
368
- File.new(RAGEL_PATH).grep(/^\s*machine\s*(\S+);\s*$/) { specs << $1 }
369
- for s in specs
370
- if RAGEL_DOTGEN == 'ragel'
371
- sh "ragel #{RAGEL_PATH} -S#{s} -p -V | dot -Tps -o#{root}/#{s}.ps"
372
- else
373
- sh "ragel -x #{RAGEL_PATH} -S#{s} | #{RAGEL_DOTGEN} -p|dot -Tps -o#{root}/#{s}.ps"
374
- end
375
- end
376
- end
377
-
378
- desc "Generate diagrams of ragel parser (png)"
379
- task :ragel_dot_png do
380
- root = 'diagrams'
381
- specs = []
382
- File.new(RAGEL_PATH).grep(/^\s*machine\s*(\S+);\s*$/) { specs << $1 }
383
- for s in specs
384
- if RAGEL_DOTGEN == 'ragel'
385
- sh "ragel #{RAGEL_PATH} -S#{s} -p -V | dot -Tpng -o#{root}/#{s}.png"
386
- else
387
- sh "ragel -x #{RAGEL_PATH} -S#{s} | #{RAGEL_DOTGEN} -p|dot -Tpng -o#{root}/#{s}.png"
388
- end
389
- end
390
- end
391
-
392
- desc "Generate diagrams of ragel parser"
393
- task :ragel_dot => [ :ragel_dot_png, :ragel_dot_ps ]
394
-
395
- desc "Build all gems and archives for a new release of json and json_pure."
396
- task :build => [ :clean, :gemspec, :package ]
397
-
398
- task :release => :build
399
- end
400
-
401
- desc "Compile in the the source directory"
402
- task :default => [ :clean, :gemspec, :test ]