sassmagic 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/Readme.md +60 -50
- data/lib/sassmagic/reset.rb +8 -2
- data/lib/sassmagic/utils.rb +59 -49
- metadata +4 -4
data/Readme.md
CHANGED
@@ -1,50 +1,60 @@
|
|
1
|
-
### sassmagic
|
2
|
-
|
3
|
-
|
4
|
-
description:Sass extention tool
|
5
|
-
|
6
|
-
|
7
|
-
### install
|
8
|
-
|
9
|
-
|
10
|
-
sudo gem install sassmagic
|
11
|
-
|
12
|
-
|
13
|
-
### use
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
"
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
"
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
1
|
+
### sassmagic
|
2
|
+
|
3
|
+
|
4
|
+
description:Sass extention tool
|
5
|
+
|
6
|
+
|
7
|
+
### install
|
8
|
+
|
9
|
+
|
10
|
+
sudo gem install sassmagic
|
11
|
+
|
12
|
+
|
13
|
+
### use
|
14
|
+
|
15
|
+
start:
|
16
|
+
|
17
|
+
####sassmagic init
|
18
|
+
|
19
|
+
or
|
20
|
+
|
21
|
+
####sassmagic creat [project]
|
22
|
+
|
23
|
+
other
|
24
|
+
|
25
|
+
same to sass
|
26
|
+
|
27
|
+
eg: sassmagic --style nested --x test.scss test.css
|
28
|
+
|
29
|
+
### configuration
|
30
|
+
|
31
|
+
|
32
|
+
sassmagic.json 配置文件:
|
33
|
+
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
{
|
38
|
+
"isNeedPxToRem": true,//是否自动转rem
|
39
|
+
"browserDefaultFontSize": "75px",//rem设置
|
40
|
+
"devicePixelRatio":"2",//dpr设置
|
41
|
+
"ignore": [//过滤不需要转rem的内容
|
42
|
+
"1px",
|
43
|
+
"[data-dpr=",
|
44
|
+
"font-size"
|
45
|
+
],
|
46
|
+
"outputExtra": [//额外输出1x 2x 3x样式表
|
47
|
+
"1x",
|
48
|
+
"2x",
|
49
|
+
"3x"
|
50
|
+
],
|
51
|
+
"imageMaxSize": "5120",//图片时候上传阀值
|
52
|
+
"imageLoader": "../config/imageuploader.js",//上传任务nodeJs
|
53
|
+
"imagesPath": {//上传文件缓存
|
54
|
+
},
|
55
|
+
"remoteStylesheet":"",//远程stylesheet路径
|
56
|
+
"tinypngKye",""//tinypngApiKey
|
57
|
+
}
|
58
|
+
|
59
|
+
imageuploader.js
|
60
|
+
图片上传
|
data/lib/sassmagic/reset.rb
CHANGED
@@ -259,7 +259,8 @@ class Sass::Tree::Visitors::ToCss < Sass::Tree::Visitors::Base
|
|
259
259
|
|
260
260
|
# Avoid allocating lots of new strings for `#output`. This is important
|
261
261
|
# because `#output` is called all the time.
|
262
|
-
|
262
|
+
# 注释常量重复声明
|
263
|
+
# NEWLINE = "\n"
|
263
264
|
|
264
265
|
# Add `s` to the output string and update the line and offset information
|
265
266
|
# accordingly.
|
@@ -520,6 +521,10 @@ class Sass::Tree::Visitors::ToCss < Sass::Tree::Visitors::Base
|
|
520
521
|
str.scan(/([\.\d]+)+(px)+([;\s]+|$)/i){ |c,v|
|
521
522
|
if !(ignore.include? c+v) && (c != '1') && c =~ /^[^0]+/
|
522
523
|
ret = ret.gsub(c.to_s,(format("%.3f",c.to_f/rem).to_f).to_s).gsub(v,'rem')
|
524
|
+
else
|
525
|
+
# debugger
|
526
|
+
ret = ret.gsub(/^0+/,'0').gsub(/(^0+)(\d+)/,'\2')
|
527
|
+
# ret = ret.to_s.gsub(/(^0+)(\d+)/,'\2')
|
523
528
|
end
|
524
529
|
}
|
525
530
|
end
|
@@ -813,7 +818,8 @@ module Sass::Exec
|
|
813
818
|
@options[:input], @options[:output] = input, output
|
814
819
|
end
|
815
820
|
|
816
|
-
|
821
|
+
# 注释常量重复声明
|
822
|
+
# COLORS = {:red => 31, :green => 32, :yellow => 33}
|
817
823
|
|
818
824
|
# Prints a status message about performing the given action,
|
819
825
|
# colored using the given color (via terminal escapes) if possible.
|
data/lib/sassmagic/utils.rb
CHANGED
@@ -250,7 +250,7 @@ module Sass::Script::Functions
|
|
250
250
|
ts = timestamp(kwargs['timestamp'])
|
251
251
|
|
252
252
|
paths = paths.map { |path| sass_to_ruby(path) }.flatten
|
253
|
-
.map { |path| compress_img(path
|
253
|
+
.map { |path| compress_img(path, encode, ts); }
|
254
254
|
|
255
255
|
list(paths, :comma)
|
256
256
|
end
|
@@ -258,55 +258,65 @@ module Sass::Script::Functions
|
|
258
258
|
|
259
259
|
|
260
260
|
private
|
261
|
-
def compress_img(path)
|
262
|
-
#图片压缩
|
261
|
+
def compress_img(path,encode,ts)
|
263
262
|
# debugger
|
264
|
-
|
265
|
-
if !$configHash.has_key?('tinypngKye') || $configHash['tinypngKye'] == '' || path =~ /^(http:|https:)\/\//
|
266
|
-
|
267
|
-
else
|
268
|
-
output = path.gsub(/\.(png|jpg)$/,'_tinypng.\1')
|
269
|
-
if File.exist?("#{File.dirname(options[:filename])}/#{output}")
|
270
|
-
path.gsub!(/\.(png|jpg)$/,'_tinypng.\1')
|
271
|
-
return
|
272
|
-
end
|
273
|
-
|
274
|
-
require "net/https"
|
275
|
-
require "uri"
|
276
|
-
|
277
|
-
key = $configHash['tinypngKye'] || ''
|
278
|
-
input = path
|
279
|
-
# real_path = File.expand_path("#{File.dirname(path)}/#{path}")
|
280
|
-
# output = "tiny-output.png"
|
281
|
-
|
282
|
-
uri = URI.parse("https://api.tinypng.com/shrink")
|
283
|
-
|
284
|
-
http = Net::HTTP.new(uri.host, uri.port)
|
285
|
-
http.use_ssl = true
|
286
|
-
|
287
|
-
# Uncomment below if you have trouble validating our SSL certificate.
|
288
|
-
# Download cacert.pem from: http://curl.haxx.se/ca/cacert.pem
|
289
|
-
# http.ca_file = File.join(File.dirname(__FILE__), "cacert.pem")
|
263
|
+
if path.is_a?(String) && path =~ PATH_REGEX
|
290
264
|
|
291
|
-
|
292
|
-
request.basic_auth("api", key)
|
265
|
+
path, ext, query, anchor = $1 + $2, $2[1..-1].downcase.to_sym, $3, $4
|
293
266
|
|
294
|
-
|
295
|
-
|
296
|
-
if response.code == "201"
|
297
|
-
# Compression was successful, retrieve output from Location header.
|
267
|
+
if MIME_TYPES.key? ext
|
268
|
+
#图片压缩
|
298
269
|
# debugger
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
270
|
+
# 未设置tinypngKye或者url图片,则不优化
|
271
|
+
if !$configHash.has_key?('tinypngKye') || $configHash['tinypngKye'] == '' || path =~ /^(http:|https:)\/\//
|
272
|
+
|
273
|
+
else
|
274
|
+
output = path.dup.gsub(/\.(png|jpg)$/,'_tinypng.\1')
|
275
|
+
if File.exist?("#{File.dirname(options[:filename])}/#{output}")
|
276
|
+
# debug exception while processing events: can't modify frozen String , Backtrace:
|
277
|
+
path.gsub!(/\.(png|jpg)$/,'_tinypng.\1')
|
278
|
+
else
|
279
|
+
require "net/https"
|
280
|
+
require "uri"
|
281
|
+
|
282
|
+
key = $configHash['tinypngKye'] || ''
|
283
|
+
input = path
|
284
|
+
# real_path = File.expand_path("#{File.dirname(path)}/#{path}")
|
285
|
+
# output = "tiny-output.png"
|
286
|
+
|
287
|
+
uri = URI.parse("https://api.tinypng.com/shrink")
|
288
|
+
|
289
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
290
|
+
http.use_ssl = true
|
291
|
+
|
292
|
+
# Uncomment below if you have trouble validating our SSL certificate.
|
293
|
+
# Download cacert.pem from: http://curl.haxx.se/ca/cacert.pem
|
294
|
+
# http.ca_file = File.join(File.dirname(__FILE__), "cacert.pem")
|
295
|
+
|
296
|
+
request = Net::HTTP::Post.new(uri.request_uri)
|
297
|
+
request.basic_auth("api", key)
|
298
|
+
|
299
|
+
response = http.request(request, File.binread("#{File.dirname(options[:filename])}/#{input}"))
|
300
|
+
# debugger
|
301
|
+
if response.code == "201"
|
302
|
+
# Compression was successful, retrieve output from Location header.
|
303
|
+
# debugger
|
304
|
+
output = path
|
305
|
+
path.gsub!(/\.(png|jpg)$/,'_tinypng.\1')
|
306
|
+
# output['.png'] = '_tinypng.png'
|
307
|
+
# output['.jpg'] = '_tinypng.jpg'
|
308
|
+
File.binwrite("#{File.dirname(options[:filename])}/#{output}", http.get(response["location"]).body)
|
309
|
+
else
|
310
|
+
# Something went wrong! You can parse the JSON body for details.
|
311
|
+
puts "Compression failed"
|
312
|
+
end
|
313
|
+
end
|
314
|
+
end
|
307
315
|
end
|
308
316
|
end
|
309
317
|
|
318
|
+
#调用to_url函数
|
319
|
+
to_url(path, encode, ts)
|
310
320
|
end
|
311
321
|
def timestamp(ts)
|
312
322
|
# no kwargs
|
@@ -415,22 +425,22 @@ module Sass::Script::Functions
|
|
415
425
|
# puts 'nodetask success'
|
416
426
|
$configHash = load_json(File.expand_path("#{File.dirname(options[:filename])}/../config/sassmagic.json"))
|
417
427
|
$configHash["imagesPath"] ||= Hash.new
|
418
|
-
if $configHash["imagesPath"].has_key?(
|
419
|
-
return $configHash["imagesPath"][
|
428
|
+
if $configHash["imagesPath"].has_key?(taskargs)
|
429
|
+
return $configHash["imagesPath"][taskargs]
|
420
430
|
else
|
421
431
|
return path
|
422
432
|
end
|
423
433
|
else
|
424
434
|
# puts 'nodetask faile'
|
425
|
-
if $configHash["imagesPath"].has_key?(
|
426
|
-
return $configHash["imagesPath"][
|
435
|
+
if $configHash["imagesPath"].has_key?(taskargs)
|
436
|
+
return $configHash["imagesPath"][taskargs]
|
427
437
|
else
|
428
438
|
return path
|
429
439
|
end
|
430
440
|
end
|
431
441
|
else
|
432
|
-
if $configHash["imagesPath"].has_key?(
|
433
|
-
return $configHash["imagesPath"][
|
442
|
+
if $configHash["imagesPath"].has_key?(taskargs)
|
443
|
+
return $configHash["imagesPath"][taskargs]
|
434
444
|
else
|
435
445
|
return path
|
436
446
|
end
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sassmagic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
|
-
-
|
8
|
+
- ring
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-03-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sass
|
@@ -34,7 +34,7 @@ dependencies:
|
|
34
34
|
- !ruby/object:Gem::Version
|
35
35
|
version: '3.5'
|
36
36
|
description: Awesome features that you wanted
|
37
|
-
email:
|
37
|
+
email: ring.wangh@alibaba-inc.com
|
38
38
|
executables:
|
39
39
|
- sassmagic
|
40
40
|
extensions: []
|