front-end-blender 0.6.1 → 0.8
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.
- data/README +9 -7
- data/bin/blend +30 -33
- data/lib/yui/LICENSE +30 -0
- data/lib/{yuicompressor.jar → yui/yuicompressor.jar} +0 -0
- metadata +3 -2
data/README
CHANGED
@@ -35,7 +35,7 @@ Other examples:
|
|
35
35
|
blend -f site/blender.yaml
|
36
36
|
blend -t css
|
37
37
|
blend -t css -d
|
38
|
-
blend
|
38
|
+
blend --yui='--preserve-semi'
|
39
39
|
|
40
40
|
== Usage
|
41
41
|
|
@@ -45,12 +45,14 @@ For help use: blend -h
|
|
45
45
|
|
46
46
|
== Options
|
47
47
|
|
48
|
-
-h, --help
|
49
|
-
-v, --version
|
50
|
-
-f <file>, --file <file>
|
51
|
-
-t <css|js>, --type <css|js>
|
52
|
-
-d, --data
|
53
|
-
--force
|
48
|
+
-h, --help Displays help message
|
49
|
+
-v, --version Display the version
|
50
|
+
-f <file>, --file <file> Use given Blendfile
|
51
|
+
-t <css|js>, --type <css|js> Select file type to blend (css, js)
|
52
|
+
-d, --data Convert url(image.ext) to url(data:) in CSS files EXPERIMENTAL
|
53
|
+
--force Force blending when source files aren't newer than output files
|
54
|
+
--yui= Pass arguments to YUI Compressor
|
55
|
+
-g, --generate Generate a stub Blendfile
|
54
56
|
|
55
57
|
== Installation
|
56
58
|
|
data/bin/blend
CHANGED
@@ -17,24 +17,27 @@ require 'find'
|
|
17
17
|
|
18
18
|
# TODO Move class to lib so other tools could potentially reuse it
|
19
19
|
class Blender
|
20
|
-
VERSION = '0.
|
20
|
+
VERSION = '0.8'
|
21
21
|
|
22
22
|
attr_reader :options
|
23
23
|
|
24
24
|
def initialize(arguments, stdin)
|
25
|
-
@arguments
|
26
|
-
@passthrough = !arguments.include?('--') ? '' : arguments[arguments.index('--')+1..-1]
|
25
|
+
@arguments = arguments
|
27
26
|
|
28
27
|
# Set defaults
|
29
28
|
@options = OpenStruct.new
|
30
29
|
@options.blendfile = 'blender.yaml'
|
31
|
-
@options.png = false
|
32
30
|
@options.data = false
|
33
31
|
@options.force = false
|
32
|
+
@options.generate = false
|
34
33
|
end
|
35
34
|
|
36
35
|
def blend
|
37
36
|
if parsed_options?
|
37
|
+
if @options.generate
|
38
|
+
create_blendfile
|
39
|
+
end
|
40
|
+
|
38
41
|
elapsed = Benchmark.realtime do
|
39
42
|
unless File.exists? @options.blendfile
|
40
43
|
puts "Couldn't find '#{@options.blendfile}'"
|
@@ -82,33 +85,28 @@ class Blender
|
|
82
85
|
def parsed_options?
|
83
86
|
opts = OptionParser.new
|
84
87
|
|
85
|
-
opts.on('-
|
86
|
-
opts.on('-
|
87
|
-
|
88
|
-
opts.on('-
|
89
|
-
@options.
|
90
|
-
|
91
|
-
|
92
|
-
opts.on(
|
93
|
-
@options.file_type = t
|
94
|
-
end
|
88
|
+
opts.on('-h', '--help') { output_help }
|
89
|
+
opts.on('-v', '--version') { output_version; exit 0 }
|
90
|
+
opts.on('-f FILE', '--file FILE', String, "Use given Blendfile") {|f| @options.blendfile = f }
|
91
|
+
opts.on('-t TYPE', '--type TYPE', [:css, :js], "Select file type to blend (css, js)") {|t| @options.file_type = t }
|
92
|
+
opts.on('-d', '--data', String, "Convert url(image.ext) to url(data:) in CSS files EXPERIMENTAL") { @options.data = true }
|
93
|
+
opts.on( '--force', String, "Force blending when source files aren't newer than output files") { @options.force = true }
|
94
|
+
opts.on( '--yui=YUIOPTS', String, "Pass arguments to YUI Compressor") {|o| @options.yuiopts = o }
|
95
|
+
opts.on('-g', '--generate', String, "Generate a stub Blendfile") { @options.generate = true }
|
95
96
|
|
96
|
-
opts.on("-d", "--data", String, "Change url(image.ext) to url(data:) in css files") { @options.data = true }
|
97
|
-
opts.on("--force", String, "Force minification when source files aren't newer than output files") { @options.force = true }
|
98
|
-
opts.on("--generate", String, "Generate a blendfile") { create_blendfile() }
|
99
97
|
opts.parse!(@arguments) rescue return false
|
100
98
|
|
101
99
|
true
|
102
100
|
end
|
103
101
|
|
104
|
-
def create_blendfile
|
102
|
+
def create_blendfile
|
105
103
|
if File.exists?(@options.blendfile) && !@options.force
|
106
104
|
puts "'#{@options.blendfile}' already exists"
|
107
105
|
exit 1
|
108
106
|
end
|
109
|
-
|
107
|
+
|
110
108
|
blend_files = Hash.new
|
111
|
-
|
109
|
+
|
112
110
|
Find.find(Dir.getwd) do |f|
|
113
111
|
if f.match /\.css$/
|
114
112
|
key = File.dirname(f) + "-min.css"
|
@@ -118,7 +116,7 @@ class Blender
|
|
118
116
|
blend_files[key] = [f]
|
119
117
|
end
|
120
118
|
end
|
121
|
-
|
119
|
+
|
122
120
|
if f.match /\.js$/
|
123
121
|
key = File.dirname(f) + "-min.js"
|
124
122
|
if blend_files.has_key? key
|
@@ -127,8 +125,8 @@ class Blender
|
|
127
125
|
blend_files[key] = [f]
|
128
126
|
end
|
129
127
|
end
|
130
|
-
|
131
|
-
Find.prune if File.basename(f).index('.') == 0
|
128
|
+
|
129
|
+
Find.prune if File.basename(f).index('.') == 0
|
132
130
|
end
|
133
131
|
|
134
132
|
File.open(@options.blendfile, 'w') { |f| YAML.dump(blend_files, f) }
|
@@ -140,24 +138,23 @@ class Blender
|
|
140
138
|
def create_output(output_name, inputs, type)
|
141
139
|
File.open(output_name, 'w') do |output_file|
|
142
140
|
output = ''
|
141
|
+
|
143
142
|
inputs.each do |i|
|
144
|
-
output
|
143
|
+
output << IO.read(i)
|
145
144
|
end
|
146
145
|
|
147
146
|
# Compress
|
148
147
|
real_file = File.symlink?(__FILE__) ? File.readlink(__FILE__) : __FILE__
|
149
148
|
|
150
|
-
IO.popen("java -jar #{File.dirname(real_file)}/../lib/yuicompressor.jar #{@
|
149
|
+
IO.popen("java -jar #{File.dirname(real_file)}/../lib/yui/yuicompressor.jar #{@options.yuiopts} --type #{type}", mode="r+") do |io|
|
151
150
|
io.write output
|
152
151
|
io.close_write
|
153
152
|
|
154
153
|
output = io.read
|
155
|
-
|
156
|
-
# Workaround for YUI Compressor Bug #1938329 & Bug #1961175
|
154
|
+
|
157
155
|
if output_name.match /\.css$/
|
158
|
-
|
159
|
-
output.gsub! '
|
160
|
-
output.gsub! '/**/;}', '/**/}'
|
156
|
+
output.gsub! ' and(', ' and (' # Workaround for YUI Compressor Bug #1938329
|
157
|
+
output.gsub! '/**/;}', '/**/}' # Workaround for YUI Compressor Bug #1961175
|
161
158
|
|
162
159
|
if @options.data
|
163
160
|
output = output.gsub(/url\(['"]?([^?']+)['"]+\)/im) do
|
@@ -175,9 +172,9 @@ class Blender
|
|
175
172
|
%Q!url("#{url_contents}")!
|
176
173
|
end
|
177
174
|
end
|
178
|
-
|
179
|
-
output_file << output
|
180
175
|
end
|
176
|
+
|
177
|
+
output_file << output
|
181
178
|
end
|
182
179
|
end
|
183
180
|
|
@@ -193,7 +190,7 @@ class Blender
|
|
193
190
|
end
|
194
191
|
|
195
192
|
def output_version
|
196
|
-
puts "
|
193
|
+
puts "Blender v#{VERSION}"
|
197
194
|
end
|
198
195
|
|
199
196
|
def output_help
|
data/lib/yui/LICENSE
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
Software License Agreement (BSD License)
|
2
|
+
|
3
|
+
Copyright (c) 2008, Yahoo! Inc.
|
4
|
+
All rights reserved.
|
5
|
+
|
6
|
+
Redistribution and use of this software in source and binary forms, with or without modification, are
|
7
|
+
permitted provided that the following conditions are met:
|
8
|
+
|
9
|
+
* Redistributions of source code must retain the above
|
10
|
+
copyright notice, this list of conditions and the
|
11
|
+
following disclaimer.
|
12
|
+
|
13
|
+
* Redistributions in binary form must reproduce the above
|
14
|
+
copyright notice, this list of conditions and the
|
15
|
+
following disclaimer in the documentation and/or other
|
16
|
+
materials provided with the distribution.
|
17
|
+
|
18
|
+
* Neither the name of Yahoo! Inc. nor the names of its
|
19
|
+
contributors may be used to endorse or promote products
|
20
|
+
derived from this software without specific prior
|
21
|
+
written permission of Yahoo! Inc.
|
22
|
+
|
23
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
|
24
|
+
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
25
|
+
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
26
|
+
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
27
|
+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
28
|
+
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
29
|
+
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
30
|
+
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
File without changes
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: front-end-blender
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: "0.8"
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Blake Elshire & Chris Griego
|
@@ -33,7 +33,8 @@ files:
|
|
33
33
|
- README
|
34
34
|
- MIT-LICENSE
|
35
35
|
- bin/blend
|
36
|
-
- lib/yuicompressor.jar
|
36
|
+
- lib/yui/yuicompressor.jar
|
37
|
+
- lib/yui/LICENSE
|
37
38
|
has_rdoc: false
|
38
39
|
homepage: http://github.com/front-end/front-end-blender/tree/master
|
39
40
|
post_install_message:
|