sprockets-svg 1.0.0 → 1.1.0

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.
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