jsus 0.2.7 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. data/.travis.yml +6 -0
  2. data/CHANGELOG +4 -1
  3. data/Gemfile +4 -1
  4. data/VERSION +1 -1
  5. data/bin/jsus +30 -9
  6. data/features/command-line/compression.feature +24 -0
  7. data/features/command-line/mooforge_compatibility_layer.feature +75 -0
  8. data/features/data/Compression/Source/Library/Color.js +17 -0
  9. data/features/data/Compression/Source/Widget/Input/Input.Color.js +21 -0
  10. data/features/data/Compression/package.yml +9 -0
  11. data/features/data/MooforgePlugin/Core/Source/Core.js +16 -0
  12. data/features/data/MooforgePlugin/Core/package.yml +8 -0
  13. data/features/data/MooforgePlugin/Plugin/Source/plugin-support.js +20 -0
  14. data/features/data/MooforgePlugin/Plugin/Source/plugin.js +21 -0
  15. data/features/data/MooforgePlugin/Plugin/package.yml +9 -0
  16. data/features/data/compression.min.js +1 -0
  17. data/jsus.gemspec +45 -22
  18. data/lib/jsus/middleware.rb +178 -0
  19. data/lib/jsus/package.rb +10 -10
  20. data/lib/jsus/source_file.rb +58 -30
  21. data/lib/jsus/tag.rb +18 -10
  22. data/lib/jsus/util/file_cache.rb +57 -0
  23. data/lib/jsus/util/inflection.rb +39 -0
  24. data/lib/jsus/util.rb +2 -0
  25. data/lib/jsus.rb +2 -0
  26. data/spec/data/ComplexDependencies/Mootools/Source/Core.js +16 -0
  27. data/spec/data/ComplexDependencies/Mootools/package.yml +8 -0
  28. data/spec/data/ComplexDependencies/Output/package.js +70 -0
  29. data/spec/data/ComplexDependencies/Output/scripts.json +14 -0
  30. data/spec/data/ComplexDependencies/Output/tree.json +33 -0
  31. data/spec/data/ComplexDependencies/Source/Library/Color.js +19 -0
  32. data/spec/data/ComplexDependencies/Source/Widget/Input/Input.Color.js +20 -0
  33. data/spec/data/ComplexDependencies/Source/Widget/Input.js +16 -0
  34. data/spec/data/ComplexDependencies/package.yml +10 -0
  35. data/spec/data/mooforge_quirky_source.js +20 -0
  36. data/spec/data/unicode_source.js +23 -0
  37. data/spec/data/unicode_source_with_bom.js +23 -0
  38. data/spec/jsus/middleware_spec.rb +216 -0
  39. data/spec/jsus/package_spec.rb +12 -6
  40. data/spec/jsus/source_file_spec.rb +42 -14
  41. data/spec/jsus/tag_spec.rb +8 -2
  42. data/spec/jsus/util/file_cache_spec.rb +67 -0
  43. data/spec/jsus/util/inflection_spec.rb +42 -0
  44. metadata +124 -62
  45. data/Gemfile.lock +0 -79
data/.travis.yml ADDED
@@ -0,0 +1,6 @@
1
+ script: "rake"
2
+ rvm:
3
+ - 1.8.7
4
+ - 1.9.2
5
+ - ree
6
+ - jruby
data/CHANGELOG CHANGED
@@ -1,4 +1,7 @@
1
1
  = Jsus Changelog
2
+ == Version 0.3.0
3
+ * Added Jsus::Middleware for rack middleware stuff. Yay!
4
+
2
5
  == Version 0.2.7
3
6
  * Brushed up CLI code
4
7
  * Added --watch option for cli (using fssm gem and fs backend for your operating system)
@@ -104,4 +107,4 @@ See jsus-examples repo or features dir for more information.
104
107
  * Moved out packing logic to brand new Packager and Container classes
105
108
 
106
109
  == Version 0.1.0
107
- * Initial release
110
+ * Initial release
data/Gemfile CHANGED
@@ -10,8 +10,11 @@ group :development do
10
10
  gem "rspec"
11
11
  gem "cucumber"
12
12
  gem "jeweler"
13
- gem "murdoc"
13
+ gem "murdoc", "~> 0.1.11"
14
14
  gem "ruby-debug19", :platforms => :ruby_19
15
15
  gem "ruby-debug", :platforms => :ruby_18
16
16
  gem 'fssm'
17
+ gem 'yui-compressor'
18
+ gem 'sinatra'
19
+ gem 'rack-test'
17
20
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.7
1
+ 0.3.0
data/bin/jsus CHANGED
@@ -122,18 +122,23 @@ module Jsus
122
122
 
123
123
  def run!
124
124
  parse_command_line!
125
+ launch!
125
126
  if watch?
126
127
  watch do |base, match|
127
128
  full_path = File.join(base, match)
128
129
  unless full_path.include?(cli_options[:output_dir])
129
130
  puts "#{match} has changed, relaunching jsus..."
130
- launch!
131
- puts "... done"
131
+ begin
132
+ launch!
133
+ puts "... done"
134
+ rescue Exception => e
135
+ puts "Exception happened: #{e}, #{e.inspect}"
136
+ puts "\t#{e.backtrace.join("\n\t")}" if Jsus.verbose?
137
+ puts "Compilation FAILED."
138
+ end
132
139
  puts ""
133
140
  end
134
141
  end
135
- else
136
- launch!
137
142
  end
138
143
  end
139
144
 
@@ -143,6 +148,20 @@ module Jsus
143
148
  puts ""
144
149
  start_directory = Dir.pwd
145
150
  watched_dirs = [cli_options[:input_dir], cli_options[:deps_dir]].compact.map {|path| File.expand_path(path)}
151
+
152
+ watched_dirs.reject! do |dir|
153
+ # This is a work around for rb-fsevent quirk
154
+ # Apparently, when your dependency dir is a child directory for your input dir,
155
+ # You get problems.
156
+ result = false
157
+ pathname_traversal = Pathname.new(dir).descend do |parent|
158
+ parent = parent.to_s
159
+ result ||= watched_dirs.include?(parent) && parent != dir
160
+ end
161
+ result
162
+ end
163
+
164
+ puts "Watching directories: " + watched_dirs.inspect if Jsus.verbose?
146
165
  FSSM.monitor do
147
166
  watched_dirs.each do |dir|
148
167
  path dir do
@@ -231,14 +250,14 @@ module Jsus
231
250
  compressor = YUI::JavaScriptCompressor.new(:munge => true)
232
251
  compressed_content = compressor.compress(@package_content)
233
252
  if compressed_content != ""
234
- compression_ratio = compressed_content.size.to_f / @package_content.size.to_f
235
- @package_content = compressed_content
253
+ @compression_ratio = compressed_content.size.to_f / @package_content.size.to_f
254
+ compressed_file_name = @package.filename.sub(/.js$/, ".min.js")
255
+ File.open(File.join(@output_dir, compressed_file_name), "w") {|f| f.write(compressed_content) }
236
256
  else
237
- compression_ratio = 1.00
238
- puts "ERROR: YUI compressor could not parse input. Falling back to uncompressed version"
257
+ @compression_ratio = 1.00
258
+ puts "ERROR: YUI compressor could not parse input. "
239
259
  puts "Compressor command used: #{compressor.command.join(' ')}"
240
260
  end
241
- puts "Compression ratio: #{sprintf("%.2f%%", compression_ratio * 100)}" if Jsus.verbose?
242
261
  checkpoint(:compress)
243
262
  rescue LoadError
244
263
  puts 'ERROR: You need "yui-compressor" gem in order to use --compress option'
@@ -302,6 +321,8 @@ module Jsus
302
321
  puts "Total compilation time: #{formatted_time_for(:compilation)}"
303
322
  puts "Post-processing time: #{formatted_time_for(:postproc)}" if options[:postproc]
304
323
  puts "Compression time: #{formatted_time_for(:compress)}" if options[:compress]
324
+ puts ""
325
+ puts "Compression ratio: #{sprintf("%.2f%%", @compression_ratio * 100)}" if Jsus.verbose? && @compression_ratio
305
326
  end
306
327
  end
307
328
 
@@ -0,0 +1,24 @@
1
+ Feature: compression
2
+ In order to minimize resulting file size, I should be able to use YUI
3
+ compressor.
4
+ Scenario: using the --compress option
5
+ When I run "jsus Compression tmp --compress"
6
+ Then the following files should exist:
7
+ | tmp/compression.js |
8
+ | tmp/compression.min.js |
9
+ And file "tmp/compression.min.js" should not contain
10
+ """
11
+ /*
12
+ """
13
+ And file "tmp/compression.min.js" should not contain
14
+ """
15
+ */
16
+ """
17
+ And file "tmp/compression.min.js" should contain
18
+ """
19
+ var Input
20
+ """
21
+ And file "tmp/compression.min.js" should contain
22
+ """
23
+ var Color
24
+ """
@@ -0,0 +1,75 @@
1
+ Feature: MooForge compatibility layer
2
+ In order to be compliant with mooforge packages, we should accept
3
+ various quirky source files.
4
+
5
+ Scenario: Compiling a mooforge package that uses mooforge tag dependency notation
6
+ When I run "jsus MooforgePlugin/Plugin tmp -d MooforgePlugin/Core"
7
+ Then the following files should exist:
8
+ | tmp/plugin.js |
9
+ And file "tmp/plugin.js" should contain
10
+ """
11
+ /*
12
+ ---
13
+
14
+ script: Core.js
15
+
16
+ description: Mootools fake core
17
+
18
+ license: MIT-style license
19
+
20
+ authors:
21
+ - Valerio Proietti
22
+
23
+ provides: [Core]
24
+
25
+ ...
26
+ */
27
+ """
28
+ And file "tmp/plugin.js" should contain
29
+ """
30
+ /*
31
+ ---
32
+
33
+ script: plugin.js
34
+
35
+ description: plugin main file
36
+
37
+ license: UNLICENSE
38
+
39
+ authors:
40
+ - Mark Abramov
41
+
42
+ provides:
43
+ - Base
44
+
45
+ requires:
46
+ - /Support
47
+ - mootools_core/1.3.0: Core
48
+
49
+ ...
50
+ */
51
+ """
52
+ And file "tmp/plugin.js" should contain
53
+ """
54
+ /*
55
+ ---
56
+
57
+ script: plugin-support.js
58
+
59
+ description: plugin support file
60
+
61
+ license: UNLICENSE
62
+
63
+ authors:
64
+ - Mark Abramov
65
+
66
+ provides:
67
+ - Support
68
+
69
+ requires:
70
+ - mootools_core/1.3.0: Core
71
+
72
+ ...
73
+ */
74
+ """
75
+ And file "tmp/plugin.js" should have "script: plugin-support.js" before "script: plugin.js"
@@ -0,0 +1,17 @@
1
+ /*
2
+ ---
3
+
4
+ script: Color.js
5
+
6
+ description: A library to work with colors
7
+
8
+ license: MIT-style license
9
+
10
+ authors:
11
+ - Valerio Proietti
12
+
13
+ provides: [Color]
14
+
15
+ ...
16
+ */
17
+ var Color = {};
@@ -0,0 +1,21 @@
1
+ /*
2
+ ---
3
+
4
+ script: Input.Color.js
5
+
6
+ description: Cool colorpicker for everyone to enjoy
7
+
8
+ license: MIT-style license
9
+
10
+ authors:
11
+ - Yaroslaff Fedin
12
+
13
+ requires:
14
+ - Color
15
+
16
+ provides: [Input.Color]
17
+
18
+ ...
19
+ */
20
+ var Input = {};
21
+ Input.Color = Color;
@@ -0,0 +1,9 @@
1
+ name: Compression
2
+ filename: compression.js
3
+ web: http://github.com/markiz/jsus
4
+ description: Jsus package with correct order set
5
+ license: Public Domain, http://unlicense.org/UNLICENSE
6
+ authors: Mark Abramov (http://github.com/markiz)
7
+ sources:
8
+ - "Source/Library/Color.js"
9
+ - "Source/Widget/Input/Input.Color.js"
@@ -0,0 +1,16 @@
1
+ /*
2
+ ---
3
+
4
+ script: Core.js
5
+
6
+ description: Mootools fake core
7
+
8
+ license: MIT-style license
9
+
10
+ authors:
11
+ - Valerio Proietti
12
+
13
+ provides: [Core]
14
+
15
+ ...
16
+ */
@@ -0,0 +1,8 @@
1
+ name: Mootools Core
2
+ filename: mootools.js
3
+ web: http://mootools.net
4
+ description: Fake mootools package
5
+ license: Public Domain, http://unlicense.org/UNLICENSE
6
+ authors: mootools authors
7
+ sources:
8
+ - "Source/Core.js"
@@ -0,0 +1,20 @@
1
+ /*
2
+ ---
3
+
4
+ script: plugin-support.js
5
+
6
+ description: plugin support file
7
+
8
+ license: UNLICENSE
9
+
10
+ authors:
11
+ - Mark Abramov
12
+
13
+ provides:
14
+ - Support
15
+
16
+ requires:
17
+ - mootools_core/1.3.0: Core
18
+
19
+ ...
20
+ */
@@ -0,0 +1,21 @@
1
+ /*
2
+ ---
3
+
4
+ script: plugin.js
5
+
6
+ description: plugin main file
7
+
8
+ license: UNLICENSE
9
+
10
+ authors:
11
+ - Mark Abramov
12
+
13
+ provides:
14
+ - Base
15
+
16
+ requires:
17
+ - /Support
18
+ - mootools_core/1.3.0: Core
19
+
20
+ ...
21
+ */
@@ -0,0 +1,9 @@
1
+ name: Plugin Package
2
+ filename: plugin.js
3
+ web: http://github.com/markiz/jsus
4
+ description: Mooforge plugin using various mooforge-specific conventions
5
+ license: 'Public Domain, http://unlicense.org/UNLICENSE'
6
+ authors: Mark Abramov (http://github.com/markiz)
7
+ sources:
8
+ - "Source/plugin-support.js"
9
+ - "Source/plugin.js"
@@ -0,0 +1 @@
1
+ var Color={};var Input={};Input.Color=Color;
data/jsus.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{jsus}
8
- s.version = "0.2.7"
8
+ s.version = "0.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Mark Abramov"]
12
- s.date = %q{2011-03-10}
12
+ s.date = %q{2011-05-17}
13
13
  s.default_executable = %q{jsus}
14
14
  s.description = %q{Javascript packager and dependency resolver}
15
15
  s.email = %q{markizko@gmail.com}
@@ -21,9 +21,9 @@ Gem::Specification.new do |s|
21
21
  s.files = [
22
22
  ".document",
23
23
  ".rspec",
24
+ ".travis.yml",
24
25
  "CHANGELOG",
25
26
  "Gemfile",
26
- "Gemfile.lock",
27
27
  "Manifest",
28
28
  "README",
29
29
  "Rakefile",
@@ -34,9 +34,11 @@ Gem::Specification.new do |s|
34
34
  "bin/jsus",
35
35
  "cucumber.yml",
36
36
  "features/command-line/basic_dependency_resolution.feature",
37
+ "features/command-line/compression.feature",
37
38
  "features/command-line/extensions.feature",
38
39
  "features/command-line/external_dependency_resolution.feature",
39
40
  "features/command-line/json_package.feature",
41
+ "features/command-line/mooforge_compatibility_layer.feature",
40
42
  "features/command-line/postproc.feature",
41
43
  "features/command-line/replacements.feature",
42
44
  "features/command-line/structure_json.feature",
@@ -46,6 +48,9 @@ Gem::Specification.new do |s|
46
48
  "features/data/BasicWrongOrder/Source/Library/Color.js",
47
49
  "features/data/BasicWrongOrder/Source/Widget/Input/Input.Color.js",
48
50
  "features/data/BasicWrongOrder/package.yml",
51
+ "features/data/Compression/Source/Library/Color.js",
52
+ "features/data/Compression/Source/Widget/Input/Input.Color.js",
53
+ "features/data/Compression/package.yml",
49
54
  "features/data/Extensions/Mootools/Source/Core.js",
50
55
  "features/data/Extensions/Mootools/package.yml",
51
56
  "features/data/Extensions/Source/Extensions/MootoolsCore.js",
@@ -66,6 +71,11 @@ Gem::Specification.new do |s|
66
71
  "features/data/JsonPackage/Source/Library/Color.js",
67
72
  "features/data/JsonPackage/Source/Widget/Input/Input.Color.js",
68
73
  "features/data/JsonPackage/package.json",
74
+ "features/data/MooforgePlugin/Core/Source/Core.js",
75
+ "features/data/MooforgePlugin/Core/package.yml",
76
+ "features/data/MooforgePlugin/Plugin/Source/plugin-support.js",
77
+ "features/data/MooforgePlugin/Plugin/Source/plugin.js",
78
+ "features/data/MooforgePlugin/Plugin/package.yml",
69
79
  "features/data/Postprocessing/MootoolsCompat12/Source/Core.js",
70
80
  "features/data/Postprocessing/MootoolsCompat12/package.yml",
71
81
  "features/data/Postprocessing/MootoolsLtIE8/Source/Core.js",
@@ -76,6 +86,7 @@ Gem::Specification.new do |s|
76
86
  "features/data/Replacements/MootoolsFork/package.yml",
77
87
  "features/data/Replacements/Source/Library/Color.js",
78
88
  "features/data/Replacements/package.yml",
89
+ "features/data/compression.min.js",
79
90
  "features/data/tmp2/package.js",
80
91
  "features/data/tmp2/scripts.json",
81
92
  "features/data/tmp2/tree.json",
@@ -84,6 +95,7 @@ Gem::Specification.new do |s|
84
95
  "jsus.gemspec",
85
96
  "lib/jsus.rb",
86
97
  "lib/jsus/container.rb",
98
+ "lib/jsus/middleware.rb",
87
99
  "lib/jsus/package.rb",
88
100
  "lib/jsus/packager.rb",
89
101
  "lib/jsus/pool.rb",
@@ -91,6 +103,8 @@ Gem::Specification.new do |s|
91
103
  "lib/jsus/tag.rb",
92
104
  "lib/jsus/util.rb",
93
105
  "lib/jsus/util/documenter.rb",
106
+ "lib/jsus/util/file_cache.rb",
107
+ "lib/jsus/util/inflection.rb",
94
108
  "lib/jsus/util/tree.rb",
95
109
  "lib/jsus/util/validator.rb",
96
110
  "lib/jsus/util/validator/base.rb",
@@ -112,6 +126,15 @@ Gem::Specification.new do |s|
112
126
  "spec/data/ChainDependencies/app/javascripts/Mash/package.yml",
113
127
  "spec/data/ClassReplacement/Source/Class.js",
114
128
  "spec/data/ClassReplacement/package.yml",
129
+ "spec/data/ComplexDependencies/Mootools/Source/Core.js",
130
+ "spec/data/ComplexDependencies/Mootools/package.yml",
131
+ "spec/data/ComplexDependencies/Output/package.js",
132
+ "spec/data/ComplexDependencies/Output/scripts.json",
133
+ "spec/data/ComplexDependencies/Output/tree.json",
134
+ "spec/data/ComplexDependencies/Source/Library/Color.js",
135
+ "spec/data/ComplexDependencies/Source/Widget/Input.js",
136
+ "spec/data/ComplexDependencies/Source/Widget/Input/Input.Color.js",
137
+ "spec/data/ComplexDependencies/package.yml",
115
138
  "spec/data/DependenciesWildcards/app/javascripts/Class/Source/Class.js",
116
139
  "spec/data/DependenciesWildcards/app/javascripts/Class/package.yml",
117
140
  "spec/data/DependenciesWildcards/app/javascripts/Hash/Source/Hash.js",
@@ -161,14 +184,20 @@ Gem::Specification.new do |s|
161
184
  "spec/data/OutsideDependencies/app/javascripts/Orwik/package.yml",
162
185
  "spec/data/bad_test_source_one.js",
163
186
  "spec/data/bad_test_source_two.js",
187
+ "spec/data/mooforge_quirky_source.js",
164
188
  "spec/data/test_source_one.js",
189
+ "spec/data/unicode_source.js",
190
+ "spec/data/unicode_source_with_bom.js",
165
191
  "spec/jsus/container_spec.rb",
192
+ "spec/jsus/middleware_spec.rb",
166
193
  "spec/jsus/package_spec.rb",
167
194
  "spec/jsus/packager_spec.rb",
168
195
  "spec/jsus/pool_spec.rb",
169
196
  "spec/jsus/source_file_spec.rb",
170
197
  "spec/jsus/tag_spec.rb",
171
198
  "spec/jsus/util/documenter_spec.rb",
199
+ "spec/jsus/util/file_cache_spec.rb",
200
+ "spec/jsus/util/inflection_spec.rb",
172
201
  "spec/jsus/util/tree_spec.rb",
173
202
  "spec/jsus/util/validator/base_spec.rb",
174
203
  "spec/jsus/util/validator/mooforge_spec.rb",
@@ -178,25 +207,10 @@ Gem::Specification.new do |s|
178
207
  s.homepage = %q{http://github.com/markiz/jsus}
179
208
  s.licenses = ["Public Domain"]
180
209
  s.require_paths = ["lib"]
181
- s.rubygems_version = %q{1.3.7}
210
+ s.rubygems_version = %q{1.6.2}
182
211
  s.summary = %q{Javascript packager and dependency resolver}
183
- s.test_files = [
184
- "spec/jsus/container_spec.rb",
185
- "spec/jsus/package_spec.rb",
186
- "spec/jsus/packager_spec.rb",
187
- "spec/jsus/pool_spec.rb",
188
- "spec/jsus/source_file_spec.rb",
189
- "spec/jsus/tag_spec.rb",
190
- "spec/jsus/util/documenter_spec.rb",
191
- "spec/jsus/util/tree_spec.rb",
192
- "spec/jsus/util/validator/base_spec.rb",
193
- "spec/jsus/util/validator/mooforge_spec.rb",
194
- "spec/shared/class_stubs.rb",
195
- "spec/spec_helper.rb"
196
- ]
197
212
 
198
213
  if s.respond_to? :specification_version then
199
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
200
214
  s.specification_version = 3
201
215
 
202
216
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
@@ -207,10 +221,13 @@ Gem::Specification.new do |s|
207
221
  s.add_development_dependency(%q<rspec>, [">= 0"])
208
222
  s.add_development_dependency(%q<cucumber>, [">= 0"])
209
223
  s.add_development_dependency(%q<jeweler>, [">= 0"])
210
- s.add_development_dependency(%q<murdoc>, [">= 0"])
224
+ s.add_development_dependency(%q<murdoc>, ["~> 0.1.11"])
211
225
  s.add_development_dependency(%q<ruby-debug19>, [">= 0"])
212
226
  s.add_development_dependency(%q<ruby-debug>, [">= 0"])
213
227
  s.add_development_dependency(%q<fssm>, [">= 0"])
228
+ s.add_development_dependency(%q<yui-compressor>, [">= 0"])
229
+ s.add_development_dependency(%q<sinatra>, [">= 0"])
230
+ s.add_development_dependency(%q<rack-test>, [">= 0"])
214
231
  else
215
232
  s.add_dependency(%q<activesupport>, [">= 0"])
216
233
  s.add_dependency(%q<json_pure>, [">= 0"])
@@ -219,10 +236,13 @@ Gem::Specification.new do |s|
219
236
  s.add_dependency(%q<rspec>, [">= 0"])
220
237
  s.add_dependency(%q<cucumber>, [">= 0"])
221
238
  s.add_dependency(%q<jeweler>, [">= 0"])
222
- s.add_dependency(%q<murdoc>, [">= 0"])
239
+ s.add_dependency(%q<murdoc>, ["~> 0.1.11"])
223
240
  s.add_dependency(%q<ruby-debug19>, [">= 0"])
224
241
  s.add_dependency(%q<ruby-debug>, [">= 0"])
225
242
  s.add_dependency(%q<fssm>, [">= 0"])
243
+ s.add_dependency(%q<yui-compressor>, [">= 0"])
244
+ s.add_dependency(%q<sinatra>, [">= 0"])
245
+ s.add_dependency(%q<rack-test>, [">= 0"])
226
246
  end
227
247
  else
228
248
  s.add_dependency(%q<activesupport>, [">= 0"])
@@ -232,10 +252,13 @@ Gem::Specification.new do |s|
232
252
  s.add_dependency(%q<rspec>, [">= 0"])
233
253
  s.add_dependency(%q<cucumber>, [">= 0"])
234
254
  s.add_dependency(%q<jeweler>, [">= 0"])
235
- s.add_dependency(%q<murdoc>, [">= 0"])
255
+ s.add_dependency(%q<murdoc>, ["~> 0.1.11"])
236
256
  s.add_dependency(%q<ruby-debug19>, [">= 0"])
237
257
  s.add_dependency(%q<ruby-debug>, [">= 0"])
238
258
  s.add_dependency(%q<fssm>, [">= 0"])
259
+ s.add_dependency(%q<yui-compressor>, [">= 0"])
260
+ s.add_dependency(%q<sinatra>, [">= 0"])
261
+ s.add_dependency(%q<rack-test>, [">= 0"])
239
262
  end
240
263
  end
241
264