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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6d4cd1fe2694f551ceacca4971f50854ea36cfe5
4
- data.tar.gz: 92f4f48ba1c319a32991093b2a13be444640f607
3
+ metadata.gz: d949c8b7f229dbf52884938e1cc7f024327d8258
4
+ data.tar.gz: 2a9bc2ad1096ce3a015319197fe1014e4bf44fbe
5
5
  SHA512:
6
- metadata.gz: d850488e8e16308a460584b25a895e27fa5a20d5db1fe2c5dbaabbae3bfe39105c8b173551c445ac54a5d49435824993aede7962fd716fe1520dbb77b64e1118
7
- data.tar.gz: 21f274ff68c4166af0c1fe29f5c1a52a08e5c9be1d7ac94e085083067b118a40efa4262a545b7035a9e398693bba6e19b5a9b25e2a8e2cd7338a79532a9c7686
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
 
@@ -1,5 +1,5 @@
1
1
  module Sprockets
2
2
  module Svg
3
- VERSION = '1.0.0'
3
+ VERSION = '1.1.0'
4
4
  end
5
5
  end
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(:png_source) { png_path.read }
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
- # Metadata etc are kinda time dependant, so this assertion is the best I can do.
52
- expect(png_source).to be_starts_with("\x89PNG\r\n")
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
@@ -22,4 +22,5 @@ Gem::Specification.new do |spec|
22
22
  spec.add_dependency 'sprockets', '>= 3'
23
23
  spec.add_dependency 'nokogiri'
24
24
  spec.add_dependency 'rmagick'
25
+ spec.add_dependency 'chunky_png'
25
26
  end
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.0.0
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-09-14 00:00:00.000000000 Z
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