sprockets-svg 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/sprockets/svg.rb +9 -1
- data/lib/sprockets/svg/version.rb +1 -1
- data/spec/rails_spec.rb +8 -3
- data/sprockets-svg.gemspec +1 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d949c8b7f229dbf52884938e1cc7f024327d8258
|
4
|
+
data.tar.gz: 2a9bc2ad1096ce3a015319197fe1014e4bf44fbe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f1f78be0778e8fae21dfc44377414649f535e520e4baa5dbcf1c9e3a256ae4c170f7db33f436783e418ee52c6171c5d674114c4c9d56414bf6dc5d6749021ff4
|
7
|
+
data.tar.gz: c32cf46a4766d384e5094ddc5dae98f3cc2481e1a496acec97d8e6f5c4a7398fb6b874835adacc1db28c10bd504ddea0a113a8cb6a31842bd559a7d4b8170192
|
data/lib/sprockets/svg.rb
CHANGED
@@ -1,17 +1,25 @@
|
|
1
1
|
require 'sprockets/svg/version'
|
2
|
-
|
2
|
+
require 'chunky_png'
|
3
3
|
require 'rmagick'
|
4
4
|
|
5
5
|
module Sprockets
|
6
6
|
module Svg
|
7
7
|
extend self
|
8
8
|
|
9
|
+
USELESS_PNG_METADATA = %w(svg:base-uri date:create date:modify).freeze
|
10
|
+
|
9
11
|
# TODO: integrate svgo instead: https://github.com/svg/svgo
|
10
12
|
# See https://github.com/lautis/uglifier on how to integrate a npm package as a gem.
|
11
13
|
def self.convert(svg_blob)
|
12
14
|
image_list = Magick::Image.from_blob(svg_blob) { self.format = 'SVG' }
|
13
15
|
image = image_list.first
|
14
16
|
image.format = 'PNG'
|
17
|
+
strip_png_metadata(image.to_blob)
|
18
|
+
end
|
19
|
+
|
20
|
+
def strip_png_metadata(png_blob)
|
21
|
+
image = ChunkyPNG::Image.from_blob(png_blob)
|
22
|
+
USELESS_PNG_METADATA.each(&image.metadata.method(:delete))
|
15
23
|
image.to_blob
|
16
24
|
end
|
17
25
|
|
data/spec/rails_spec.rb
CHANGED
@@ -25,7 +25,7 @@ describe 'Sprockets::Svg' do
|
|
25
25
|
|
26
26
|
let(:manifest) { JSON.parse(File.read(manifest_path)) }
|
27
27
|
|
28
|
-
let(:
|
28
|
+
let(:png_fingerprint) { Digest::MD5.hexdigest(png_path.read) }
|
29
29
|
|
30
30
|
describe 'Rake task' do
|
31
31
|
before :each do
|
@@ -48,8 +48,13 @@ describe 'Sprockets::Svg' do
|
|
48
48
|
expect(png_path).to be_exist
|
49
49
|
|
50
50
|
expect(svg_fingerprint).to be == '2d8738f246e37a7befd06db8dc2f7e11'
|
51
|
-
|
52
|
-
|
51
|
+
|
52
|
+
png_metadata = ChunkyPNG::Image.from_file(png_path.to_s).metadata
|
53
|
+
expect(png_metadata).to be_empty
|
54
|
+
|
55
|
+
# Metadata usually contains some timestamps, so sleeping is the best way to make sure they are all stripped
|
56
|
+
sleep 1
|
57
|
+
expect(png_fingerprint).to be == Digest::MD5.hexdigest(Sprockets::Svg.convert(svg_path.read))
|
53
58
|
|
54
59
|
expect(manifest['files'][svg_name]).to be_present
|
55
60
|
expect(manifest['files'][png_name]).to be_present
|
data/sprockets-svg.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sprockets-svg
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jean Boussier
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-11-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: chunky_png
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
description: Minify SVG assets, and optionally convert them to PNG for browser compatibility.
|
70
84
|
email:
|
71
85
|
- jean.boussier@gmail.com
|