rake-minify 0.3.3 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
@@ -0,0 +1,8 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.8.7
4
+ - 1.9.2
5
+ - 1.9.3
6
+ before_install:
7
+ - gem update --system
8
+ - gem --version
data/Gemfile CHANGED
@@ -1,15 +1,3 @@
1
- source :rubygems
1
+ source 'https://rubygems.org'
2
2
 
3
- gem "jsmin", "~> 1.0.1"
4
- gem "rake", ">= 0.8.7"
5
-
6
- group :development do
7
- gem "rspec", "~> 2.5.0"
8
- gem "cucumber", ">= 0"
9
- gem "jeweler", "~> 1.5.2"
10
- gem 'test_notifier', '~> 0.3.6'
11
- gem 'autotest', '~> 4.4'
12
- gem "rcov", ">= 0"
13
- gem "coffee-script", ">= 2.2.0"
14
- gem "therubyracer"
15
- end
3
+ gemspec
@@ -1,48 +1,55 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ rake-minify (0.4.0)
5
+ jsmin (~> 1.0.1)
6
+ rake (>= 0.8.7)
7
+
1
8
  GEM
2
- remote: http://rubygems.org/
9
+ remote: https://rubygems.org/
3
10
  specs:
4
- ZenTest (4.5.0)
11
+ ZenTest (4.8.3)
5
12
  autotest (4.4.6)
6
13
  ZenTest (>= 4.4.1)
7
- builder (3.0.0)
14
+ builder (3.1.4)
8
15
  coffee-script (2.2.0)
9
16
  coffee-script-source
10
17
  execjs
11
- coffee-script-source (1.1.1)
12
- cucumber (0.10.3)
18
+ coffee-script-source (1.4.0)
19
+ cucumber (1.2.1)
13
20
  builder (>= 2.1.2)
14
- diff-lcs (>= 1.1.2)
15
- gherkin (>= 2.3.8)
21
+ diff-lcs (>= 1.1.3)
22
+ gherkin (~> 2.11.0)
16
23
  json (>= 1.4.6)
17
- term-ansicolor (>= 1.0.5)
18
- diff-lcs (1.1.2)
19
- execjs (1.0.0)
24
+ diff-lcs (1.1.3)
25
+ execjs (1.4.0)
20
26
  multi_json (~> 1.0)
21
- gherkin (2.3.9)
27
+ gherkin (2.11.5)
22
28
  json (>= 1.4.6)
23
- git (1.2.5)
24
- jeweler (1.5.2)
25
- bundler (~> 1.0.0)
26
- git (>= 1.2.5)
27
- rake
28
29
  jsmin (1.0.1)
29
- json (1.5.1)
30
- multi_json (1.0.3)
31
- notifier (0.1.3)
32
- rake (0.9.0)
33
- rcov (0.9.9)
34
- rspec (2.5.0)
35
- rspec-core (~> 2.5.0)
36
- rspec-expectations (~> 2.5.0)
37
- rspec-mocks (~> 2.5.0)
38
- rspec-core (2.5.2)
39
- rspec-expectations (2.5.0)
40
- diff-lcs (~> 1.1.2)
41
- rspec-mocks (2.5.0)
42
- term-ansicolor (1.0.5)
30
+ json (1.7.5)
31
+ libv8 (3.3.10.4)
32
+ multi_json (1.5.0)
33
+ notifier (0.4.1)
34
+ rake (10.0.3)
35
+ rdoc (3.12)
36
+ json (~> 1.4)
37
+ rspec (2.12.0)
38
+ rspec-core (~> 2.12.0)
39
+ rspec-expectations (~> 2.12.0)
40
+ rspec-mocks (~> 2.12.0)
41
+ rspec-core (2.12.2)
42
+ rspec-expectations (2.12.1)
43
+ diff-lcs (~> 1.1.3)
44
+ rspec-mocks (2.12.1)
45
+ simplecov (0.7.1)
46
+ multi_json (~> 1.0)
47
+ simplecov-html (~> 0.7.1)
48
+ simplecov-html (0.7.1)
43
49
  test_notifier (0.3.6)
44
50
  notifier
45
- therubyracer (0.8.2)
51
+ therubyracer (0.9.10)
52
+ libv8 (~> 3.3.10)
46
53
 
47
54
  PLATFORMS
48
55
  ruby
@@ -51,10 +58,9 @@ DEPENDENCIES
51
58
  autotest (~> 4.4)
52
59
  coffee-script (>= 2.2.0)
53
60
  cucumber
54
- jeweler (~> 1.5.2)
55
- jsmin (~> 1.0.1)
56
- rake (>= 0.8.7)
57
- rcov
58
- rspec (~> 2.5.0)
61
+ rake-minify!
62
+ rdoc (~> 3.12)
63
+ rspec (~> 2.12.0)
64
+ simplecov
59
65
  test_notifier (~> 0.3.6)
60
66
  therubyracer
@@ -1,4 +1,6 @@
1
- Copyright (c) 2011 Matteo Collina
1
+ Copyright (c) 2012 Matteo Collina
2
+
3
+ MIT License
2
4
 
3
5
  Permission is hereby granted, free of charge, to any person obtaining
4
6
  a copy of this software and associated documentation files (the
@@ -17,4 +19,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
19
  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
20
  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
21
  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -1,6 +1,8 @@
1
1
  = rake-minify
2
2
 
3
- Rake Minify is an exetremely simple solution for minifying javascript and coffeescript files using a rake task.
3
+ Rake Minify is an extremely simple solution for minifying javascript and coffeescript files using a rake task.
4
+
5
+ {<img src="https://secure.travis-ci.org/mcollina/rake-minify.png?branch=master" alt="Build Status" />}[http://travis-ci.org/mcollina/rake-minify]
4
6
 
5
7
  == Installation
6
8
 
@@ -95,6 +97,39 @@ You can specify it:
95
97
  add("output.js", "source.coffee", :bare => true)
96
98
  end
97
99
 
100
+ == Combine from ruby block
101
+
102
+ With a single file:
103
+
104
+ require 'rake/minify'
105
+ Rake::Minify.new(:minify_single) do
106
+ dir("path/to/your/dir") do # we specify only the source directory
107
+ add("output.js") do
108
+ # this is evaluated during the build
109
+ "var a = 'hello js!'"
110
+ end
111
+ end
112
+ end
113
+
114
+ With a group:
115
+
116
+ require 'rake/minify'
117
+ Rake::Minify.new(:minify_and_combine) do
118
+ dir("path/to/your/dir") do # we specify only the source directory
119
+ group("output-first-second.js") do
120
+ add(:minify => false) do
121
+ # this is evaluated during the build
122
+ "var a = 'hello js!'"
123
+ end
124
+
125
+ add(:coffeescript => true) do
126
+ # this is evaluated as coffescript
127
+ "(a -> 'hello coffee!')()"
128
+ end
129
+ end
130
+ end
131
+ end
132
+
98
133
  == Contributing to rake-minify
99
134
 
100
135
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
data/Rakefile CHANGED
@@ -1,35 +1,16 @@
1
- require 'rubygems'
2
- require 'rake'
1
+ require "bundler/gem_tasks"
3
2
 
4
- require 'jeweler'
5
- Jeweler::Tasks.new do |gem|
6
- # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
7
- gem.name = "rake-minify"
8
- gem.homepage = "http://github.com/mcollina/rake-minify"
9
- gem.license = "MIT"
10
- gem.summary = %Q{A rake task to minify javascripts and coffeescripts}
11
- gem.description = %Q{A rake task to minify javascripts and coffeescripts}
12
- gem.email = "matteo.collina@gmail.com"
13
- gem.authors = ["Matteo Collina"]
14
- # Include your dependencies below. Runtime dependencies are required when using your gem,
15
- # and development dependencies are only needed for development (ie running rake tasks, tests, etc)
16
- # gem.add_runtime_dependency 'jabber4r', '> 0.1'
17
- # gem.add_development_dependency 'rspec', '> 1.2.3'
18
- end
19
- Jeweler::RubygemsDotOrgTasks.new
20
-
21
- require 'rspec/core'
22
3
  require 'rspec/core/rake_task'
23
- RSpec::Core::RakeTask.new(:spec) do |spec|
24
- spec.pattern = FileList['spec/**/*_spec.rb']
25
- end
26
4
 
27
- RSpec::Core::RakeTask.new(:rcov) do |spec|
28
- spec.pattern = 'spec/**/*_spec.rb'
29
- spec.rcov = true
30
- spec.rcov_opts = ["--text-summary", "--exclude","lib\/rspec,bin\/rspec,lib\/rcov," +
31
- "spec,diff-lcs,lib\/cucumber,lib\/gherkin,cucumber,features,rake-0,coffee,json,execjs,jsmin"]
5
+ desc "Run specs"
6
+ RSpec::Core::RakeTask.new
32
7
 
8
+ namespace :spec do
9
+ desc "Create rspec coverage"
10
+ task :coverage do
11
+ ENV['COVERAGE'] = 'true'
12
+ Rake::Task["spec"].execute
13
+ end
33
14
  end
34
15
 
35
16
  require 'cucumber/rake/task'
@@ -37,9 +18,9 @@ Cucumber::Rake::Task.new(:features)
37
18
 
38
19
  task :default => [:features, :spec]
39
20
 
40
- require 'rake/rdoctask'
21
+ require 'rdoc/task'
41
22
  Rake::RDocTask.new do |rdoc|
42
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
23
+ version = File.read "VERSION"
43
24
 
44
25
  rdoc.rdoc_dir = 'rdoc'
45
26
  rdoc.title = "rake-minify #{version}"
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.3
1
+ 0.4.0
@@ -1,5 +1,7 @@
1
1
  (function() {
2
2
  var a;
3
+
3
4
  a = "hello a";
5
+
4
6
  }).call(this);
5
7
 
@@ -1,4 +1,6 @@
1
1
  (function() {
2
2
  var a;
3
+
3
4
  a = "hello a";
5
+
4
6
  }).call(this);
@@ -76,3 +76,44 @@ Feature: Minify Javascripts
76
76
  Given we want to add the file "a.js" into "a/dir/a.min.js"
77
77
  When I run rake minify
78
78
  Then "a/dir/a.min.js" should include "a.min.js"
79
+
80
+ Scenario: Minify single javascript built by ruby
81
+ Given we want to add the following javascript into "a.min.js":
82
+ """
83
+ a = "a"
84
+ "var a = \"hello #{a}\" ;"
85
+
86
+
87
+
88
+
89
+ """
90
+ When I run rake minify
91
+ Then "a.min.js" should be minified
92
+
93
+
94
+ Scenario: Minify single coffeescript built by ruby
95
+ Given we want to add the following coffeescript into "c-a-wrapped.min.js":
96
+ """
97
+ a = "a"
98
+ "a = \"hello #{a}\""
99
+
100
+
101
+
102
+
103
+ """
104
+ When I run rake minify
105
+ Then "c-a-wrapped.min.js" should be minified
106
+
107
+ Scenario: Minify multiple javascripts built by ruby
108
+ Given we want to add the following javascript into "app.min.js":
109
+ """
110
+ a = "a"
111
+ "var a = \"hello #{a}\" ;"
112
+
113
+
114
+
115
+
116
+ """
117
+ And we want to add the file "b.js" into "app.min.js"
118
+ When I run rake minify
119
+ Then "app.min.js" should include "a.min.js" and "b.min.js"
@@ -27,18 +27,22 @@ Then /^"([^"]*)" should include "([^"]*)"(?: and "([^"]*)")?$/ do |result, sourc
27
27
  sources << source2 if source2
28
28
  sources.map! do |s|
29
29
  file = File.join(File.dirname(__FILE__), "..", "js-expected", s)
30
+ minified = true
30
31
  unless File.exists? file
31
32
  file = File.join(File.dirname(__FILE__), "..", "js-sources", s)
33
+ minified = false
32
34
  end
33
35
 
34
36
  open(file) do |e|
35
- e.read
37
+ r = e.read
38
+ r.gsub!(/\n$/, '') if minified
39
+ r
36
40
  end
37
41
  end
38
42
 
39
43
  open(File.join(@dir, result)) do |result|
40
44
  content = result.read
41
- sources.each { |s| content.should include(s.gsub(/\n$/,'')) } # this is unfortunate :/
45
+ sources.each { |s| content.should include(s) }
42
46
  end
43
47
  end
44
48
 
@@ -61,3 +65,12 @@ end
61
65
  Given /^the inner directory "([^"]*)"$/ do |dir|
62
66
  indir(dir)
63
67
  end
68
+
69
+ Given /^we want to add the following javascript into "(.*?)":$/ do |output, string|
70
+ add_to_groups(output, nil, {}, string)
71
+ end
72
+
73
+ Given /^we want to add the following coffeescript into "(.*?)":$/ do |output, string|
74
+ add_to_groups(output, nil, { :coffeescript => "true" }, string)
75
+ end
76
+
@@ -9,12 +9,12 @@ class Group
9
9
  @sources = []
10
10
  end
11
11
 
12
- def add(source, options)
13
- @sources << GroupElement.new(source, options)
12
+ def add(source, options, block)
13
+ @sources << GroupElement.new(source, options, block)
14
14
  end
15
15
  end
16
16
 
17
- GroupElement = Struct.new(:source, :options)
17
+ GroupElement = Struct.new(:source, :options, :block)
18
18
 
19
19
  def groups
20
20
  @groups ||= Hash.new do |h, k|
@@ -22,12 +22,12 @@ def groups
22
22
  end
23
23
  end
24
24
 
25
- def add_to_groups(output, file, options=nil)
25
+ def add_to_groups(output, file, options=nil, block=nil)
26
26
  options = options.keys.reduce({}) do |hash, key|
27
27
  hash[key.to_sym] = eval(options[key])
28
28
  hash
29
29
  end if options
30
- groups[output].add(file, options)
30
+ groups[output].add(file, options, block)
31
31
  end
32
32
 
33
33
  def generate_rakefile
@@ -40,14 +40,26 @@ Rake::Minify.new(<%= @name_for_generation %>) do
40
40
  <% end %>
41
41
  <% groups.values.each do |group| %>
42
42
  <% if group.sources.size == 1 %>
43
- add(<%= group.output.inspect %>, <%= group.sources.first.source.inspect %>, <%= group.sources.first.options.inspect %>)
43
+ <% if group.sources.first.source %>
44
+ add(<%= group.output.inspect %>, <%= group.sources.first.source.inspect %>, <%= group.sources.first.options.inspect %>)
45
+ <% else %>
46
+ add(<%= group.output.inspect %>, <%= group.sources.first.options.inspect %>) do
47
+ <%= group.sources.first.block %>
48
+ end
49
+ <% end %>
44
50
  <% else %>
45
51
  group(<%= group.output.inspect %>) do |group|
46
52
  <% if indir %>
47
53
  dir(<%= indir.inspect %>) do
48
54
  <% end %>
49
55
  <% group.sources.each do |element| %>
50
- add(<%= element.source.inspect %>, <%= element.options.inspect %>)
56
+ <% if element.source %>
57
+ add(<%= element.source.inspect %>, <%= element.options.inspect %>)
58
+ <% else %>
59
+ add(<%= element.options.inspect %>) do
60
+ <%= element.block %>
61
+ end
62
+ <% end %>
51
63
  <% end %>
52
64
  <% if indir %>
53
65
  end
@@ -1,2 +1 @@
1
-
2
1
  require 'rake/minify'
@@ -19,8 +19,19 @@ class Rake::Minify < Rake::TaskLib
19
19
  end
20
20
  end
21
21
 
22
- def add(output, source, opts = { :minify => true })
23
- add_source(output, Source.new(build_path(source), opts))
22
+ def add(output, *args, &block)
23
+ source = opts = nil
24
+
25
+ if block.nil?
26
+ source = build_path(args.shift)
27
+ else
28
+ source = block
29
+ end
30
+
31
+ opts = args.shift
32
+ opts ||= { :minify => true }
33
+
34
+ add_source(output, Source.new(source, opts, &block))
24
35
  end
25
36
 
26
37
  def group(output, &block)
@@ -36,7 +47,7 @@ class Rake::Minify < Rake::TaskLib
36
47
  end
37
48
 
38
49
  def invoke
39
- instance_eval &@config # to be configured like the pros
50
+ instance_eval(&@config) # to be configured like the pros
40
51
 
41
52
  @sources.each do |dest, source|
42
53
  FileUtils.mkdir_p(File.dirname(dest))
@@ -10,9 +10,17 @@ class Rake::Minify
10
10
  instance_eval &block if block
11
11
  end
12
12
 
13
- def add(source, opts=nil)
13
+ def add(*args, &block)
14
+ if block
15
+ source = block
16
+ else
17
+ source = parent.build_path(args.shift)
18
+ end
19
+
20
+ opts = args.shift
14
21
  opts ||= { :minify => true }
15
- @sources << Source.new(parent.build_path(source), opts)
22
+
23
+ @sources << Source.new(source, opts)
16
24
  end
17
25
 
18
26
  def build
@@ -6,21 +6,26 @@ class Rake::Minify::Source
6
6
  @source = source
7
7
  @minify = optional_boolean(options[:minify], true)
8
8
  @coffee_bare = optional_boolean(options[:bare], false)
9
+ @coffee = options[:coffeescript]
9
10
  end
10
11
 
11
12
  def build
12
13
  coffee_script! if coffee?
13
14
 
14
- Kernel.open(source) do |input|
15
- output = input.read
16
- output = CoffeeScript.compile(output, :bare => @coffee_bare) if coffee?
17
- output = JSMin.minify(output).strip if minify
18
- output
15
+ if source.respond_to? :call
16
+ output = source.call
17
+ else
18
+ output = Kernel.open(source) { |input| input.read }
19
19
  end
20
+
21
+ output = CoffeeScript.compile(output, :bare => @coffee_bare) if coffee?
22
+ output = JSMin.minify(output).strip if minify
23
+
24
+ output
20
25
  end
21
26
 
22
27
  def coffee?
23
- source =~ /\.coffee$/
28
+ source =~ /\.coffee$/ or @coffee
24
29
  end
25
30
 
26
31
  private
@@ -1,108 +1,34 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
1
  # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
4
 
6
- Gem::Specification.new do |s|
7
- s.name = %q{rake-minify}
8
- s.version = "0.3.3"
5
+ Gem::Specification.new do |gem|
6
+ gem.name = "rake-minify"
7
+ gem.version = File.read "VERSION"
8
+ gem.authors = ["Matteo Collina"]
9
+ gem.email = ["hello@matteocollina.com"]
10
+ gem.description = %q{A rake task to minify javascripts and coffeescripts}
11
+ gem.summary = %q{A rake task to minify javascripts and coffeescripts}
12
+ gem.homepage = "http://github.com/mcollina/rake-minify"
9
13
 
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Matteo Collina"]
12
- s.date = %q{2011-06-20}
13
- s.description = %q{A rake task to minify javascripts and coffeescripts}
14
- s.email = %q{matteo.collina@gmail.com}
15
- s.extra_rdoc_files = [
16
- "LICENSE.txt",
17
- "README.rdoc"
18
- ]
19
- s.files = [
20
- ".autotest",
21
- ".document",
22
- ".rspec",
23
- ".rvmrc",
24
- "Gemfile",
25
- "Gemfile.lock",
26
- "LICENSE.txt",
27
- "README.rdoc",
28
- "Rakefile",
29
- "VERSION",
30
- "features/coffeescript.feature",
31
- "features/js-expected/a.min.js",
32
- "features/js-expected/b.min.js",
33
- "features/js-expected/c-a-bare.min.js",
34
- "features/js-expected/c-a-wrapped.min.js",
35
- "features/js-expected/c-a.min.js",
36
- "features/js-sources/a.js",
37
- "features/js-sources/b.js",
38
- "features/js-sources/c-a-bare.js",
39
- "features/js-sources/c-a-wrapped.js",
40
- "features/js-sources/c-a.coffee",
41
- "features/js-sources/c-a.js",
42
- "features/minify.feature",
43
- "features/rake-interface.feature",
44
- "features/step_definitions/rake-minify_steps.rb",
45
- "features/support/env.rb",
46
- "features/support/generate_rakefiles.rb",
47
- "lib/rake-minify.rb",
48
- "lib/rake/minify.rb",
49
- "lib/rake/minify/group.rb",
50
- "lib/rake/minify/source.rb",
51
- "rake-minify.gemspec",
52
- "spec/rake/minify/group_spec.rb",
53
- "spec/rake/minify/source_spec.rb",
54
- "spec/rake/minify_spec.rb",
55
- "spec/spec_helper.rb"
56
- ]
57
- s.homepage = %q{http://github.com/mcollina/rake-minify}
58
- s.licenses = ["MIT"]
59
- s.require_paths = ["lib"]
60
- s.rubygems_version = %q{1.5.3}
61
- s.summary = %q{A rake task to minify javascripts and coffeescripts}
62
- s.test_files = [
63
- "spec/rake/minify/group_spec.rb",
64
- "spec/rake/minify/source_spec.rb",
65
- "spec/rake/minify_spec.rb",
66
- "spec/spec_helper.rb"
67
- ]
14
+ gem.files = `git ls-files`.split($/)
15
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
16
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
17
+ gem.require_paths = ["lib"]
68
18
 
69
- if s.respond_to? :specification_version then
70
- s.specification_version = 3
19
+ gem.add_dependency("rake", ">= 0.8.7")
20
+ gem.add_dependency("jsmin", "~> 1.0.1")
71
21
 
72
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
73
- s.add_runtime_dependency(%q<jsmin>, ["~> 1.0.1"])
74
- s.add_runtime_dependency(%q<rake>, [">= 0.8.7"])
75
- s.add_development_dependency(%q<rspec>, ["~> 2.5.0"])
76
- s.add_development_dependency(%q<cucumber>, [">= 0"])
77
- s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
78
- s.add_development_dependency(%q<test_notifier>, ["~> 0.3.6"])
79
- s.add_development_dependency(%q<autotest>, ["~> 4.4"])
80
- s.add_development_dependency(%q<rcov>, [">= 0"])
81
- s.add_development_dependency(%q<coffee-script>, [">= 2.2.0"])
82
- s.add_development_dependency(%q<therubyracer>, [">= 0"])
83
- else
84
- s.add_dependency(%q<jsmin>, ["~> 1.0.1"])
85
- s.add_dependency(%q<rake>, [">= 0.8.7"])
86
- s.add_dependency(%q<rspec>, ["~> 2.5.0"])
87
- s.add_dependency(%q<cucumber>, [">= 0"])
88
- s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
89
- s.add_dependency(%q<test_notifier>, ["~> 0.3.6"])
90
- s.add_dependency(%q<autotest>, ["~> 4.4"])
91
- s.add_dependency(%q<rcov>, [">= 0"])
92
- s.add_dependency(%q<coffee-script>, [">= 2.2.0"])
93
- s.add_dependency(%q<therubyracer>, [">= 0"])
94
- end
95
- else
96
- s.add_dependency(%q<jsmin>, ["~> 1.0.1"])
97
- s.add_dependency(%q<rake>, [">= 0.8.7"])
98
- s.add_dependency(%q<rspec>, ["~> 2.5.0"])
99
- s.add_dependency(%q<cucumber>, [">= 0"])
100
- s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
101
- s.add_dependency(%q<test_notifier>, ["~> 0.3.6"])
102
- s.add_dependency(%q<autotest>, ["~> 4.4"])
103
- s.add_dependency(%q<rcov>, [">= 0"])
104
- s.add_dependency(%q<coffee-script>, [">= 2.2.0"])
105
- s.add_dependency(%q<therubyracer>, [">= 0"])
22
+ gem.add_development_dependency("rspec", "~> 2.12.0")
23
+ gem.add_development_dependency("cucumber", ">= 0")
24
+ gem.add_development_dependency('test_notifier', '~> 0.3.6')
25
+ gem.add_development_dependency('autotest', '~> 4.4')
26
+
27
+ if RUBY_VERSION >= "1.9"
28
+ gem.add_development_dependency("simplecov")
106
29
  end
107
- end
108
30
 
31
+ gem.add_development_dependency("coffee-script", ">= 2.2.0")
32
+ gem.add_development_dependency("therubyracer")
33
+ gem.add_development_dependency("rdoc", "~> 3.12")
34
+ end
@@ -54,6 +54,19 @@ class Rake::Minify
54
54
  subject.build.should == "aaaa"
55
55
  end
56
56
 
57
+ it "should accept add inside the block passed to new" do
58
+ source = double("source", :build => "aaaa")
59
+ Source.stub!(:new).with(kind_of(Proc), :minify => false).and_return(source)
60
+
61
+ subject = Group.new(parent) do
62
+ add(:minify => false) do
63
+ # in this spec, this is not called
64
+ end
65
+ end
66
+
67
+ subject.build.should == "aaaa"
68
+ end
69
+
57
70
  it "should expose its parent dir method" do
58
71
  parent.should_receive(:dir).with("a_dir").and_yield("hello world")
59
72
  (subject.dir("a_dir") { |a| a }).should == "hello world" #weird method to test this
@@ -13,6 +13,26 @@ class Rake::Minify
13
13
  end
14
14
  end
15
15
 
16
+ context "configured with a block" do
17
+ subject do
18
+ Source.new(lambda { ' var a = "b" ;' }, :minify => true)
19
+ end
20
+
21
+ it "should minify the result of the block" do
22
+ subject.build.should == "var a=\"b\";"
23
+ end
24
+ end
25
+
26
+ context "configured with a block and forcing the source to be some coffeescript" do
27
+ subject do
28
+ Source.new(lambda { ' a = "b" ' }, :minify => true, :coffeescript => true, :bare => true)
29
+ end
30
+
31
+ it "should minify the result of the block" do
32
+ subject.build.should == "var a;a=\"b\";"
33
+ end
34
+ end
35
+
16
36
  context "configured to open 'another_source' and to not minify it" do
17
37
  subject { Source.new("another_source", :minify => false) }
18
38
 
@@ -174,4 +174,23 @@ describe Rake::Minify do
174
174
  add("output", "source")
175
175
  end
176
176
  end
177
+
178
+ context "configured to minify the passed JS" do
179
+ subject do
180
+ Rake::Minify.new do
181
+ add("output") do
182
+ ' var a = "b" ;'
183
+ end
184
+ end
185
+ end
186
+
187
+ before :each do
188
+ @output = stub_open("output","", "w")
189
+ end
190
+
191
+ it "should minify the input file when invoked" do
192
+ do_invoke
193
+ @output.string.should == "var a=\"b\";"
194
+ end
195
+ end
177
196
  end
@@ -3,6 +3,11 @@ require 'bundler'
3
3
  Bundler.setup
4
4
  require 'rspec'
5
5
 
6
+ if ENV["COVERAGE"]
7
+ require 'simplecov'
8
+ SimpleCov.start
9
+ end
10
+
6
11
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
7
12
  $LOAD_PATH.unshift(File.dirname(__FILE__))
8
13
  require 'rake-minify'
metadata CHANGED
@@ -1,190 +1,139 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rake-minify
3
- version: !ruby/object:Gem::Version
4
- hash: 21
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.0
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 3
9
- - 3
10
- version: 0.3.3
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Matteo Collina
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-06-20 00:00:00 +02:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2012-12-26 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rake
16
+ requirement: &70147868153080 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 0.8.7
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70147868153080
25
+ - !ruby/object:Gem::Dependency
22
26
  name: jsmin
23
- version_requirements: &id001 !ruby/object:Gem::Requirement
27
+ requirement: &70147868152480 !ruby/object:Gem::Requirement
24
28
  none: false
25
- requirements:
29
+ requirements:
26
30
  - - ~>
27
- - !ruby/object:Gem::Version
28
- hash: 21
29
- segments:
30
- - 1
31
- - 0
32
- - 1
31
+ - !ruby/object:Gem::Version
33
32
  version: 1.0.1
34
- prerelease: false
35
33
  type: :runtime
36
- requirement: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: rake
39
- version_requirements: &id002 !ruby/object:Gem::Requirement
40
- none: false
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- hash: 49
45
- segments:
46
- - 0
47
- - 8
48
- - 7
49
- version: 0.8.7
50
34
  prerelease: false
51
- type: :runtime
52
- requirement: *id002
53
- - !ruby/object:Gem::Dependency
35
+ version_requirements: *70147868152480
36
+ - !ruby/object:Gem::Dependency
54
37
  name: rspec
55
- version_requirements: &id003 !ruby/object:Gem::Requirement
38
+ requirement: &70147868151940 !ruby/object:Gem::Requirement
56
39
  none: false
57
- requirements:
40
+ requirements:
58
41
  - - ~>
59
- - !ruby/object:Gem::Version
60
- hash: 27
61
- segments:
62
- - 2
63
- - 5
64
- - 0
65
- version: 2.5.0
66
- prerelease: false
42
+ - !ruby/object:Gem::Version
43
+ version: 2.12.0
67
44
  type: :development
68
- requirement: *id003
69
- - !ruby/object:Gem::Dependency
45
+ prerelease: false
46
+ version_requirements: *70147868151940
47
+ - !ruby/object:Gem::Dependency
70
48
  name: cucumber
71
- version_requirements: &id004 !ruby/object:Gem::Requirement
49
+ requirement: &70147868151180 !ruby/object:Gem::Requirement
72
50
  none: false
73
- requirements:
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- hash: 3
77
- segments:
78
- - 0
79
- version: "0"
80
- prerelease: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
81
55
  type: :development
82
- requirement: *id004
83
- - !ruby/object:Gem::Dependency
84
- name: jeweler
85
- version_requirements: &id005 !ruby/object:Gem::Requirement
86
- none: false
87
- requirements:
88
- - - ~>
89
- - !ruby/object:Gem::Version
90
- hash: 7
91
- segments:
92
- - 1
93
- - 5
94
- - 2
95
- version: 1.5.2
96
56
  prerelease: false
97
- type: :development
98
- requirement: *id005
99
- - !ruby/object:Gem::Dependency
57
+ version_requirements: *70147868151180
58
+ - !ruby/object:Gem::Dependency
100
59
  name: test_notifier
101
- version_requirements: &id006 !ruby/object:Gem::Requirement
60
+ requirement: &70147868112740 !ruby/object:Gem::Requirement
102
61
  none: false
103
- requirements:
62
+ requirements:
104
63
  - - ~>
105
- - !ruby/object:Gem::Version
106
- hash: 31
107
- segments:
108
- - 0
109
- - 3
110
- - 6
64
+ - !ruby/object:Gem::Version
111
65
  version: 0.3.6
112
- prerelease: false
113
66
  type: :development
114
- requirement: *id006
115
- - !ruby/object:Gem::Dependency
67
+ prerelease: false
68
+ version_requirements: *70147868112740
69
+ - !ruby/object:Gem::Dependency
116
70
  name: autotest
117
- version_requirements: &id007 !ruby/object:Gem::Requirement
71
+ requirement: &70147868112120 !ruby/object:Gem::Requirement
118
72
  none: false
119
- requirements:
73
+ requirements:
120
74
  - - ~>
121
- - !ruby/object:Gem::Version
122
- hash: 19
123
- segments:
124
- - 4
125
- - 4
126
- version: "4.4"
127
- prerelease: false
75
+ - !ruby/object:Gem::Version
76
+ version: '4.4'
128
77
  type: :development
129
- requirement: *id007
130
- - !ruby/object:Gem::Dependency
131
- name: rcov
132
- version_requirements: &id008 !ruby/object:Gem::Requirement
133
- none: false
134
- requirements:
135
- - - ">="
136
- - !ruby/object:Gem::Version
137
- hash: 3
138
- segments:
139
- - 0
140
- version: "0"
141
78
  prerelease: false
79
+ version_requirements: *70147868112120
80
+ - !ruby/object:Gem::Dependency
81
+ name: simplecov
82
+ requirement: &70147868111580 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
142
88
  type: :development
143
- requirement: *id008
144
- - !ruby/object:Gem::Dependency
89
+ prerelease: false
90
+ version_requirements: *70147868111580
91
+ - !ruby/object:Gem::Dependency
145
92
  name: coffee-script
146
- version_requirements: &id009 !ruby/object:Gem::Requirement
93
+ requirement: &70147868110320 !ruby/object:Gem::Requirement
147
94
  none: false
148
- requirements:
149
- - - ">="
150
- - !ruby/object:Gem::Version
151
- hash: 7
152
- segments:
153
- - 2
154
- - 2
155
- - 0
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
156
98
  version: 2.2.0
157
- prerelease: false
158
99
  type: :development
159
- requirement: *id009
160
- - !ruby/object:Gem::Dependency
100
+ prerelease: false
101
+ version_requirements: *70147868110320
102
+ - !ruby/object:Gem::Dependency
161
103
  name: therubyracer
162
- version_requirements: &id010 !ruby/object:Gem::Requirement
104
+ requirement: &70147868109880 !ruby/object:Gem::Requirement
163
105
  none: false
164
- requirements:
165
- - - ">="
166
- - !ruby/object:Gem::Version
167
- hash: 3
168
- segments:
169
- - 0
170
- version: "0"
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :development
171
111
  prerelease: false
112
+ version_requirements: *70147868109880
113
+ - !ruby/object:Gem::Dependency
114
+ name: rdoc
115
+ requirement: &70147868109260 !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ~>
119
+ - !ruby/object:Gem::Version
120
+ version: '3.12'
172
121
  type: :development
173
- requirement: *id010
122
+ prerelease: false
123
+ version_requirements: *70147868109260
174
124
  description: A rake task to minify javascripts and coffeescripts
175
- email: matteo.collina@gmail.com
125
+ email:
126
+ - hello@matteocollina.com
176
127
  executables: []
177
-
178
128
  extensions: []
179
-
180
- extra_rdoc_files:
181
- - LICENSE.txt
182
- - README.rdoc
183
- files:
129
+ extra_rdoc_files: []
130
+ files:
184
131
  - .autotest
185
132
  - .document
133
+ - .gitignore
186
134
  - .rspec
187
135
  - .rvmrc
136
+ - .travis.yml
188
137
  - Gemfile
189
138
  - Gemfile.lock
190
139
  - LICENSE.txt
@@ -217,41 +166,48 @@ files:
217
166
  - spec/rake/minify/source_spec.rb
218
167
  - spec/rake/minify_spec.rb
219
168
  - spec/spec_helper.rb
220
- has_rdoc: true
221
169
  homepage: http://github.com/mcollina/rake-minify
222
- licenses:
223
- - MIT
170
+ licenses: []
224
171
  post_install_message:
225
172
  rdoc_options: []
226
-
227
- require_paths:
173
+ require_paths:
228
174
  - lib
229
- required_ruby_version: !ruby/object:Gem::Requirement
175
+ required_ruby_version: !ruby/object:Gem::Requirement
230
176
  none: false
231
- requirements:
232
- - - ">="
233
- - !ruby/object:Gem::Version
234
- hash: 3
235
- segments:
236
- - 0
237
- version: "0"
238
- required_rubygems_version: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ! '>='
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ required_rubygems_version: !ruby/object:Gem::Requirement
239
182
  none: false
240
- requirements:
241
- - - ">="
242
- - !ruby/object:Gem::Version
243
- hash: 3
244
- segments:
245
- - 0
246
- version: "0"
183
+ requirements:
184
+ - - ! '>='
185
+ - !ruby/object:Gem::Version
186
+ version: '0'
247
187
  requirements: []
248
-
249
188
  rubyforge_project:
250
- rubygems_version: 1.5.3
189
+ rubygems_version: 1.8.15
251
190
  signing_key:
252
191
  specification_version: 3
253
192
  summary: A rake task to minify javascripts and coffeescripts
254
- test_files:
193
+ test_files:
194
+ - features/coffeescript.feature
195
+ - features/js-expected/a.min.js
196
+ - features/js-expected/b.min.js
197
+ - features/js-expected/c-a-bare.min.js
198
+ - features/js-expected/c-a-wrapped.min.js
199
+ - features/js-expected/c-a.min.js
200
+ - features/js-sources/a.js
201
+ - features/js-sources/b.js
202
+ - features/js-sources/c-a-bare.js
203
+ - features/js-sources/c-a-wrapped.js
204
+ - features/js-sources/c-a.coffee
205
+ - features/js-sources/c-a.js
206
+ - features/minify.feature
207
+ - features/rake-interface.feature
208
+ - features/step_definitions/rake-minify_steps.rb
209
+ - features/support/env.rb
210
+ - features/support/generate_rakefiles.rb
255
211
  - spec/rake/minify/group_spec.rb
256
212
  - spec/rake/minify/source_spec.rb
257
213
  - spec/rake/minify_spec.rb