sprite-factory 1.6.2 → 1.7

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: 097ca4bb60eba921f4f50b9aa01f4637f76aac8d
4
- data.tar.gz: f4270a2b011d8abe87e92ad99146766aad37eee8
3
+ metadata.gz: b8eaae33fa1ece6b170c111201b49c9c43aedf9a
4
+ data.tar.gz: 61a3998645237d26ded4d57c98970182ed1b9a85
5
5
  SHA512:
6
- metadata.gz: b23043b30ce92ee88cc2450fa88934ae7e26f2bc9e62ddc7f0bbf77fa9c6e5858816bacd55da3ff2e4d2d303c9f11548cfe8e99d0d89fe6eb093584248744f63
7
- data.tar.gz: 4fb30bc756f357ace50ea35ec3a584c2e0b33daee1a5d5ab0d54901be2cdb9ba04490ee6d8840e93d05b2a8fd09f3d0073423e370b7192307007183d20bbc7cc
6
+ metadata.gz: 75b2b7092d6c87cde70180776c04a6e0fa6ec10f6c12244b8163f1749634875ed871274101f70449b830d3ee4451c58fe9de18cead42059aea204d673d941eb1
7
+ data.tar.gz: e2145ffe3b32229049d3ab9929e4c3f3da8e65b2417f731cb58913760a4075179881f9941c60b63fc5660a7dac7db14e949ef79418f3d919e01865f96e839867
data/Gemfile CHANGED
@@ -8,5 +8,5 @@ source "http://rubygems.org"
8
8
 
9
9
  group :development do
10
10
  gem "chunky_png", "1.3.0"
11
- gem "rmagick", "2.13.2"
11
+ gem "rmagick", "2.13.4"
12
12
  end
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- Sprite Factory (v1.6.2)
1
+ Sprite Factory (v1.7)
2
2
  =======================
3
3
 
4
4
  The sprite factory is a ruby library that can be used to generate
@@ -98,6 +98,7 @@ Much of the behavior can be customized by overriding the following options:
98
98
  - `:height` - fix height of each sprite to a specific size
99
99
  - `:nocss` - suppress generation of output stylesheet (`run!` returns css content as a string instead)
100
100
  - `:nocomments` - suppress generation of comments in output stylesheet
101
+ - `:sanitizer` - strip non-word characters from image filenames when generating css selectors
101
102
 
102
103
  Options can be passed as command line arguments to the `sf` script:
103
104
 
@@ -183,7 +184,6 @@ image filename. For example:
183
184
  div.example div.foo span.icon_alert { ... first file ... }
184
185
  div.example div.bar span.icon_alert { ... second file ... }
185
186
 
186
-
187
187
  If you want to specify a psuedo class such as `:hover` for some of your images, the library will also
188
188
  map '--' (double dash) to a colon ':' in any source image filename. For example:
189
189
 
@@ -199,6 +199,40 @@ map '--' (double dash) to a colon ':' in any source image filename. For example:
199
199
  span.icon_alert { ... first file ... }
200
200
  span.icon_alert:hover { ... second file ... }
201
201
 
202
+ Sanitizing the CSS Selector
203
+ ===========================
204
+
205
+ If your image filenames contain non-word characters that would otherwise invalidate your css selector you
206
+ can sanitize these characters using the `:sanitizer` option. For example:
207
+
208
+ images/icons/has & ampersand.png
209
+ images/icons/odd.period.png
210
+ images/icons/ends with bang!.png
211
+
212
+ ... when run with:
213
+
214
+ SpriteFactory.run!('images/icons', :sanitizer => true)
215
+
216
+ ... will generate:
217
+
218
+ span.icon_hasampersand { ... first file ... }
219
+ span.icon_oddperiod { ... second file ... }
220
+ span.icon_endswithbang { ... third file ... }
221
+
222
+ If you want **full control** over the filename-to-selector sanitization process you can provide a custom `:sanitizer`. For example:
223
+
224
+ images/icons/foo.png
225
+ images/icons/bar.png
226
+
227
+ ... when run with:
228
+
229
+ SpriteFactory.run!('images/icons', :sanitizer => lamda { |name| name.reverse }) # pointless, but amusing
230
+
231
+ ... will generate
232
+
233
+ span.icon_oof { ... first file ... }
234
+ span.icon_rab { ... second file ... }
235
+
202
236
  Customizing the CSS Image Url
203
237
  =============================
204
238
 
@@ -1,3 +1,12 @@
1
+ August 15th 2015 - v1.7
2
+ -----------------------
3
+
4
+ * added `sanitizer` option to give more control over converting non-standard filenames to css selectors (hattip to @MentalPower)
5
+ * rename `directory_separator` option to simpler `separator`
6
+ * switch to minitest
7
+ * replace deprecated require 'RMagick' with require 'rmagick' (courtesy of @warrenguy)
8
+ * added `:glob` option to override default globbing behavior (courtsey of @jdlich)
9
+
1
10
  January 17th 2015 - v1.6.2
2
11
  --------------------------
3
12
 
data/Rakefile CHANGED
@@ -47,6 +47,9 @@ task :reference do
47
47
  regenerate.call('test/images/irregular', :output => 'test/images/irregular.sassy', :selector => 'img.sassy_', :style => :sass)
48
48
 
49
49
  regenerate.call('test/images/hover', :output => 'test/images/hover', :selector => 'div.hover ', :style => :css)
50
+ regenerate.call('test/images/glob', :output => 'test/images/glob', :glob => "included*")
51
+ regenerate.call('test/images/names', :output => 'test/images/sanitized', :sanitizer => true)
52
+ regenerate.call('test/images/names', :output => 'test/images/sanitized.custom', :sanitizer => lambda {|name| name.gsub(/[^\w]/, '_').downcase })
50
53
 
51
54
  regenerate.call('test/images/custom', :output => 'test/images/custom') do |images|
52
55
  rules = []
data/bin/sf CHANGED
@@ -29,7 +29,9 @@ output_style_help = "specify output location for generated stylesheet ( default:
29
29
  pngcrush_help = "use pngcrush to optimize generated image"
30
30
  padding_help = "add padding to each sprite"
31
31
  margin_help = "add margin to each sprite"
32
+ glob_help = "specify glob pattern used to find images ( default: '*' )"
32
33
  nocomments_help = "suppress comments in generated stylesheet"
34
+ sanitizer_help = "strip non-word characters out of filenames when converting to css selector"
33
35
 
34
36
  op.on("--layout [ORIENTATION]", layout_help) {|value| options[:layout] = value }
35
37
  op.on("--style [STYLE]", style_help) {|value| options[:style] = value }
@@ -39,9 +41,11 @@ op.on("--cssurl [CSSURL]", cssurl_help) {|value| options[:cssur
39
41
  op.on("--output-image [PATH]", output_image_help) {|value| options[:output_image] = value }
40
42
  op.on("--output-style [PATH]", output_style_help) {|value| options[:output_style] = value }
41
43
  op.on("--pngcrush", pngcrush_help) {|value| options[:pngcrush] = value }
42
- op.on("--padding [PIXELS]", padding_help) {|value| options[:padding] = value.to_i }
43
- op.on("--margin [PIXELS]", margin_help) {|value| options[:margin] = value.to_i }
44
+ op.on("--padding [PIXELS]", padding_help) {|value| options[:padding] = value.to_i }
45
+ op.on("--margin [PIXELS]", margin_help) {|value| options[:margin] = value.to_i }
46
+ op.on("--glob [PATTERN]", glob_help) {|value| options[:glob] = value }
44
47
  op.on("--nocomments", nocomments_help) {|value| options[:nocomments] = true }
48
+ op.on("--sanitizer", sanitizer_help) {|value| options[:sanitizer] = true }
45
49
 
46
50
  begin
47
51
  op.parse!(ARGV)
@@ -51,5 +55,3 @@ rescue Exception => ex
51
55
  puts ex.message
52
56
  exit
53
57
  end
54
-
55
-
@@ -1,8 +1,8 @@
1
1
  module SpriteFactory
2
-
2
+
3
3
  #----------------------------------------------------------------------------
4
4
 
5
- VERSION = "1.6.2"
5
+ VERSION = "1.7"
6
6
  SUMMARY = "Automatic CSS sprite generator"
7
7
  DESCRIPTION = "Combines individual images from a directory into a single sprite image file and creates an appropriate CSS stylesheet"
8
8
  LIB = File.dirname(__FILE__)
@@ -27,7 +27,9 @@ module SpriteFactory
27
27
  attr_accessor :cssurl
28
28
  attr_accessor :pngcrush
29
29
  attr_accessor :nocomments
30
- attr_accessor :directory_separator
30
+ attr_accessor :separator
31
+ attr_accessor :glob
32
+ attr_accessor :sanitizer
31
33
  end
32
34
 
33
35
  #----------------------------------------------------------------------------
@@ -51,7 +53,7 @@ module SpriteFactory
51
53
  end
52
54
 
53
55
  end
54
-
56
+
55
57
  #----------------------------------------------------------------------------
56
58
 
57
59
  module Library # abstract module for using various image libraries
@@ -67,7 +69,7 @@ module SpriteFactory
67
69
  def self.chunkypng
68
70
  ChunkyPng
69
71
  end
70
-
72
+
71
73
  def self.image_magick
72
74
  ImageMagick
73
75
  end
@@ -1,4 +1,4 @@
1
- require 'RMagick'
1
+ require 'rmagick'
2
2
 
3
3
  module SpriteFactory
4
4
  module Library
@@ -12,7 +12,7 @@ module SpriteFactory
12
12
 
13
13
  attr :input
14
14
  attr :config
15
-
15
+
16
16
  def initialize(input, config = {})
17
17
  @input = input.to_s[-1] == "/" ? input[0...-1] : input # gracefully ignore trailing slash on input directory name
18
18
  @config = config
@@ -24,9 +24,11 @@ module SpriteFactory
24
24
  @config[:report] ||= SpriteFactory.report
25
25
  @config[:pngcrush] ||= SpriteFactory.pngcrush
26
26
  @config[:nocomments] ||= SpriteFactory.nocomments
27
- @config[:directory_separator] ||= SpriteFactory.directory_separator || '_'
27
+ @config[:separator] ||= SpriteFactory.separator || '_'
28
+ @config[:glob] ||= SpriteFactory.glob || '*'
29
+ @config[:sanitizer] ||= SpriteFactory.sanitizer
28
30
  end
29
-
31
+
30
32
  #----------------------------------------------------------------------------
31
33
 
32
34
  def run!(&block)
@@ -76,7 +78,7 @@ module SpriteFactory
76
78
  end
77
79
 
78
80
  #----------------------------------------------------------------------------
79
-
81
+
80
82
  private
81
83
 
82
84
  def selector
@@ -139,8 +141,12 @@ module SpriteFactory
139
141
  config[:nocomments] # set true if you dont want any comments in the output style file
140
142
  end
141
143
 
142
- def directory_separator
143
- config[:directory_separator]
144
+ def separator
145
+ config[:separator]
146
+ end
147
+
148
+ def sanitizer
149
+ config[:sanitizer]
144
150
  end
145
151
 
146
152
  def custom_style_file
@@ -166,7 +172,7 @@ module SpriteFactory
166
172
  def image_files
167
173
  return [] if input.nil?
168
174
  valid_extensions = library::VALID_EXTENSIONS
169
- expansions = Array(valid_extensions).map{|ext| File.join(input, "**", "*.#{ext}")}
175
+ expansions = Array(valid_extensions).map{|ext| File.join(input, "**", "#{config[:glob]}.#{ext}")}
170
176
  SpriteFactory.find_files(*expansions)
171
177
  end
172
178
 
@@ -181,22 +187,31 @@ module SpriteFactory
181
187
 
182
188
  images = library.load(image_files)
183
189
  images.each do |i|
184
- i[:name], i[:ext] = map_image_filename(i[:filename], input_path)
190
+ i[:name], i[:ext] = extract_image_filename(i[:filename], input_path)
185
191
  raise RuntimeError, "image #{i[:name]} does not fit within a fixed width of #{width}" if width && (width < i[:width])
186
192
  raise RuntimeError, "image #{i[:name]} does not fit within a fixed height of #{height}" if height && (height < i[:height])
187
193
  end
188
194
  images.sort_by {|i| [image_name_without_pseudo_class(i), image_pseudo_class_priority(i)] }
189
195
  end
190
196
 
191
- def map_image_filename(filename, input_path)
192
- name = Pathname.new(filename).relative_path_from(input_path).to_s.gsub(File::SEPARATOR, directory_separator)
193
- name = name.gsub('--', ':')
194
- name = name.gsub('__', ' ')
197
+ def extract_image_filename(filename, input_path)
198
+ name = Pathname.new(filename).relative_path_from(input_path).to_s.gsub(File::SEPARATOR, separator)
195
199
  ext = File.extname(name)
196
200
  name = name[0...-ext.length] unless ext.empty?
201
+ name = sanitize_image_filename(name)
197
202
  [name, ext]
198
203
  end
199
204
 
205
+ def sanitize_image_filename(name)
206
+ if sanitizer.is_a?(Proc)
207
+ sanitizer.call(name) # custom sanitizer
208
+ elsif sanitizer
209
+ name.gsub(/[^\w-]/, '') # (opt-in) clean all non-word characters
210
+ else
211
+ name.gsub('--', ':').gsub('__', ' ') # legacy behavior
212
+ end
213
+ end
214
+
200
215
  def image_name_without_pseudo_class(image)
201
216
  image[:name].split(':').first
202
217
  end
@@ -249,7 +264,7 @@ module SpriteFactory
249
264
  if SUPPORTS_PNGCRUSH && config[:pngcrush]
250
265
  crushed = "#{image}.crushed"
251
266
  system('pngcrush', '-q', '-rem alla', '-reduce', '-brute', image, crushed)
252
- FileUtils.mv(crushed, image)
267
+ FileUtils.mv(crushed, image)
253
268
  end
254
269
  end
255
270
 
@@ -0,0 +1,20 @@
1
+ /*
2
+
3
+ Creating a sprite from following images:
4
+
5
+ test/images/glob/included1.png (64x64)
6
+ test/images/glob/included2.png (64x64)
7
+ test/images/glob/included3.png (64x64)
8
+
9
+ Output files:
10
+ test/images/glob.png
11
+ test/images/glob.css
12
+
13
+ Output size:
14
+ 192x64
15
+
16
+
17
+ */
18
+ img.included1 { width: 64px; height: 64px; background: url(glob.png) 0px 0px no-repeat; }
19
+ img.included2 { width: 64px; height: 64px; background: url(glob.png) -64px 0px no-repeat; }
20
+ img.included3 { width: 64px; height: 64px; background: url(glob.png) -128px 0px no-repeat; }
@@ -0,0 +1,20 @@
1
+ /*
2
+
3
+ Creating a sprite from following images:
4
+
5
+ test/images/names/Ends With Bang!.png (64x64)
6
+ test/images/names/Has & Ampersand.png (64x64)
7
+ test/images/names/Odd.Period.png (64x64)
8
+
9
+ Output files:
10
+ test/images/sanitized.png
11
+ test/images/sanitized.css
12
+
13
+ Output size:
14
+ 192x64
15
+
16
+
17
+ */
18
+ img.EndsWithBang { width: 64px; height: 64px; background: url(sanitized.png) 0px 0px no-repeat; }
19
+ img.HasAmpersand { width: 64px; height: 64px; background: url(sanitized.png) -64px 0px no-repeat; }
20
+ img.OddPeriod { width: 64px; height: 64px; background: url(sanitized.png) -128px 0px no-repeat; }
@@ -0,0 +1,20 @@
1
+ /*
2
+
3
+ Creating a sprite from following images:
4
+
5
+ test/images/names/Ends With Bang!.png (64x64)
6
+ test/images/names/Has & Ampersand.png (64x64)
7
+ test/images/names/Odd.Period.png (64x64)
8
+
9
+ Output files:
10
+ test/images/sanitized.custom.png
11
+ test/images/sanitized.custom.css
12
+
13
+ Output size:
14
+ 192x64
15
+
16
+
17
+ */
18
+ img.ends_with_bang_ { width: 64px; height: 64px; background: url(sanitized.custom.png) 0px 0px no-repeat; }
19
+ img.has___ampersand { width: 64px; height: 64px; background: url(sanitized.custom.png) -64px 0px no-repeat; }
20
+ img.odd_period { width: 64px; height: 64px; background: url(sanitized.custom.png) -128px 0px no-repeat; }
@@ -142,6 +142,26 @@ module SpriteFactory
142
142
 
143
143
  #----------------------------------------------------------------------------
144
144
 
145
+ def test_generate_with_custom_glob
146
+ integration_test(GLOB_PATH, :glob => 'included*')
147
+ end
148
+
149
+ #----------------------------------------------------------------------------
150
+
151
+ def test_generate_with_sanitizer
152
+ integration_test(NAMES_PATH, :output => output_path('sanitized'),
153
+ :sanitizer => true)
154
+ end
155
+
156
+ #----------------------------------------------------------------------------
157
+
158
+ def test_generate_with_custom_sanitizer
159
+ integration_test(NAMES_PATH, :output => output_path('sanitized.custom'),
160
+ :sanitizer => lambda {|name| name.gsub(/[^\w]/, '_').downcase })
161
+ end
162
+
163
+ #----------------------------------------------------------------------------
164
+
145
165
  def test_generate_sprite_with_nocss
146
166
  input = REGULAR_PATH
147
167
  output = File.basename(REGULAR_PATH)
@@ -18,7 +18,7 @@ module SpriteFactory
18
18
  assert_equal(:horizontal, r.layout_name)
19
19
  assert_equal(:css, r.style_name)
20
20
  assert_equal(:rmagick, r.library_name)
21
- assert_equal(DIRECTORY_SEPARATOR, r.directory_separator)
21
+ assert_equal(SEPARATOR, r.separator)
22
22
 
23
23
  r = Runner.new(IRREGULAR_PATH)
24
24
  assert_equal(IRREGULAR_PATH, r.input)
@@ -29,9 +29,9 @@ module SpriteFactory
29
29
  assert_equal(:horizontal, r.layout_name)
30
30
  assert_equal(:css, r.style_name)
31
31
  assert_equal(:rmagick, r.library_name)
32
- assert_equal(DIRECTORY_SEPARATOR, r.directory_separator)
32
+ assert_equal(SEPARATOR, r.separator)
33
33
 
34
- r = Runner.new(IRREGULAR_PATH, :directory_separator => '.')
34
+ r = Runner.new(IRREGULAR_PATH, :separator => '.')
35
35
  assert_equal(IRREGULAR_PATH, r.input)
36
36
  assert_equal(IRREGULAR_PATH, r.output)
37
37
  assert_equal(IRREGULAR_PATH + ".png", r.output_image_file)
@@ -40,7 +40,7 @@ module SpriteFactory
40
40
  assert_equal(:horizontal, r.layout_name)
41
41
  assert_equal(:css, r.style_name)
42
42
  assert_equal(:rmagick, r.library_name)
43
- assert_equal('.', r.directory_separator)
43
+ assert_equal('.', r.separator)
44
44
 
45
45
  r = Runner.new(REGULAR_PATH, :output => IRREGULAR_PATH)
46
46
  assert_equal(REGULAR_PATH, r.input)
@@ -51,7 +51,7 @@ module SpriteFactory
51
51
  assert_equal(:horizontal, r.layout_name)
52
52
  assert_equal(:css, r.style_name)
53
53
  assert_equal(:rmagick, r.library_name)
54
- assert_equal(DIRECTORY_SEPARATOR, r.directory_separator)
54
+ assert_equal(SEPARATOR, r.separator)
55
55
 
56
56
  r = Runner.new(REGULAR_PATH, :output_image => "foo.png", :output_style => "bar.css.sass.erb")
57
57
  assert_equal(REGULAR_PATH, r.input)
@@ -62,7 +62,7 @@ module SpriteFactory
62
62
  assert_equal(:horizontal, r.layout_name)
63
63
  assert_equal(:css, r.style_name)
64
64
  assert_equal(:rmagick, r.library_name)
65
- assert_equal(DIRECTORY_SEPARATOR, r.directory_separator)
65
+ assert_equal(SEPARATOR, r.separator)
66
66
 
67
67
  r = Runner.new(REGULAR_PATH, :layout => :vertical, :library => :chunkypng, :style => :sass)
68
68
  assert_equal(REGULAR_PATH, r.input)
@@ -73,7 +73,7 @@ module SpriteFactory
73
73
  assert_equal(:vertical, r.layout_name)
74
74
  assert_equal(:sass, r.style_name)
75
75
  assert_equal(:chunkypng, r.library_name)
76
- assert_equal(DIRECTORY_SEPARATOR, r.directory_separator)
76
+ assert_equal(SEPARATOR, r.separator)
77
77
 
78
78
  end
79
79
 
@@ -239,10 +239,10 @@ module SpriteFactory
239
239
  end
240
240
  end
241
241
 
242
- def test_use_specified_directory_separator
242
+ def test_use_specified_separator
243
243
  Runner.publicize_methods do
244
244
  expected = %w(england.amy england.bob france.bob usa.amy usa.bob)
245
- actual = Runner.new(SUBFOLDERS_PATH, :directory_separator => '.').load_images.map{|i| i[:name]}
245
+ actual = Runner.new(SUBFOLDERS_PATH, :separator => '.').load_images.map{|i| i[:name]}
246
246
  assert_equal(expected, actual)
247
247
  end
248
248
  end
@@ -1,8 +1,8 @@
1
1
  require File.expand_path('../lib/sprite_factory', File.dirname(__FILE__))
2
- require 'test/unit'
2
+ require 'minitest/autorun'
3
3
 
4
4
  module SpriteFactory
5
- class TestCase < Test::Unit::TestCase
5
+ class TestCase < Minitest::Test
6
6
 
7
7
  #----------------------------------------------------------------------------
8
8
 
@@ -16,6 +16,8 @@ module SpriteFactory
16
16
  EMPTY_PATH = 'test/images/empty'
17
17
  SUBFOLDERS_PATH = 'test/images/subfolders'
18
18
  HOVER_PATH = 'test/images/hover'
19
+ GLOB_PATH = 'test/images/glob'
20
+ NAMES_PATH = 'test/images/names'
19
21
 
20
22
  REGULAR = SpriteFactory.find_files(File.join(REGULAR_PATH, '*.png'))
21
23
  IRREGULAR = SpriteFactory.find_files(File.join(IRREGULAR_PATH, '*.png'))
@@ -36,7 +38,7 @@ module SpriteFactory
36
38
  { :filename => IRREGULAR[4], :width => 46, :height => 25 }
37
39
  ]
38
40
 
39
- DIRECTORY_SEPARATOR = '_'
41
+ SEPARATOR = '_'
40
42
 
41
43
  def output_path(name)
42
44
  File.join(IMAGES_PATH, name)
@@ -80,14 +82,14 @@ module SpriteFactory
80
82
  #----------------------------------------------------------------------------
81
83
 
82
84
  def assert_runtime_error(msg = nil)
83
- e = assert_raise RuntimeError do
85
+ e = assert_raises RuntimeError do
84
86
  yield
85
87
  end
86
88
  assert_match(msg, e.message) if msg
87
89
  end
88
90
 
89
91
  def assert_not_implemented(msg = nil)
90
- e = assert_raise NotImplementedError do
92
+ e = assert_raises NotImplementedError do
91
93
  yield
92
94
  end
93
95
  assert_match(msg, e.message) if msg
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sprite-factory
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.2
4
+ version: '1.7'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jake Gordon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-17 00:00:00.000000000 Z
11
+ date: 2015-08-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rmagick
@@ -76,6 +76,11 @@ files:
76
76
  - test/images/formats/spies.jpg
77
77
  - test/images/formats/stackoverflow.ico
78
78
  - test/images/formats/thief.png
79
+ - test/images/glob/excluded1.png
80
+ - test/images/glob/excluded2.png
81
+ - test/images/glob/included1.png
82
+ - test/images/glob/included2.png
83
+ - test/images/glob/included3.png
79
84
  - test/images/hover/div.bar__img.icon--active.png
80
85
  - test/images/hover/div.bar__img.icon--focus.png
81
86
  - test/images/hover/div.bar__img.icon--hover.png
@@ -94,10 +99,15 @@ files:
94
99
  - test/images/irregular/irregular4.png
95
100
  - test/images/irregular/irregular5.png
96
101
  - test/images/irregular/readme.txt
102
+ - test/images/names/Ends With Bang!.png
103
+ - test/images/names/Has & Ampersand.png
104
+ - test/images/names/Odd.Period.png
97
105
  - test/images/reference/custom.css
98
106
  - test/images/reference/custom.png
99
107
  - test/images/reference/formats.css
100
108
  - test/images/reference/formats.png
109
+ - test/images/reference/glob.css
110
+ - test/images/reference/glob.png
101
111
  - test/images/reference/hover.css
102
112
  - test/images/reference/hover.png
103
113
  - test/images/reference/index.html
@@ -140,6 +150,10 @@ files:
140
150
  - test/images/reference/regular.vertical.css
141
151
  - test/images/reference/regular.vertical.png
142
152
  - test/images/reference/s.gif
153
+ - test/images/reference/sanitized.css
154
+ - test/images/reference/sanitized.custom.css
155
+ - test/images/reference/sanitized.custom.png
156
+ - test/images/reference/sanitized.png
143
157
  - test/images/reference/subfolders.css
144
158
  - test/images/reference/subfolders.png
145
159
  - test/images/regular/regular1.PNG
@@ -181,7 +195,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
181
195
  version: '0'
182
196
  requirements: []
183
197
  rubyforge_project:
184
- rubygems_version: 2.2.2
198
+ rubygems_version: 2.4.5
185
199
  signing_key:
186
200
  specification_version: 4
187
201
  summary: Automatic CSS sprite generator