spriteful 0.0.2 → 0.0.3

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: 4b4afd4331ff36f10f6b759ac9f0e4bcf896d9b0
4
- data.tar.gz: fa28b01a1fc02c7d0760ad30009d560eeca3eefe
3
+ metadata.gz: f6cf5f6f9da3adc2537eedce271cdf44121395d5
4
+ data.tar.gz: 7986af3aacb58098b2ffd059631529f9d7446e71
5
5
  SHA512:
6
- metadata.gz: 29d488e6bb8db434a4cde7806ef4fe8c70c68014a3b24c134434d45ca8e4621a4d9b68f9b639003d48841b7f6b21fdffb49149345fc499b3ca64c6ba1509f8a1
7
- data.tar.gz: fc40aa9a782002afa88bdaaa056a9629219b21f160223a18622d71b9c8b4788687a862655a522c3ff112f70e39af1da1e512af287b76a593548b7d5960d6c81c
6
+ metadata.gz: 6e30d010efaa8b3167dfabf53f4aeba3e76fcab957b644418d7a70abc180b744dcd5c3d066b951925088c34d116889ea940d4fec9cf39dddafa11cf924127bf6
7
+ data.tar.gz: 056140c5247449b352b092d5fbfe57da6e2cfb8c27f5cbdd3d85ef42dc11f353d2dc17bc8fc5e0bebee0d606bdcdd199790072414ce2be24d776335091c000ad
data/README.md CHANGED
@@ -55,6 +55,22 @@ spriteful images/icons -f scss
55
55
  }
56
56
  ```
57
57
 
58
+ You can also choose to genete the code using
59
+ [Mixin Directives](http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#mixins).
60
+
61
+ ```bash
62
+ spriteful images/icons -f scss --mixin
63
+ # create icons.png
64
+ # copy icons.scss
65
+ ```
66
+
67
+ ```scss
68
+ // in your SCSS code...
69
+ .button {
70
+ @include icons-sprite-new;
71
+ }
72
+ ```
73
+
58
74
  ### Multiple sprites
59
75
 
60
76
  You can deal with multiple sprites in a single run. If `images/icons` has a set of images for one
@@ -100,6 +116,7 @@ you need to add a new source to an existing sprite.
100
116
  * `--destination` (`-d`) - Directory to save the generated image(s).
101
117
  * `--rails` (`-r`) - Forces rails specific settings, see [Spriteful and Rails](#spriteful-and-rails) for more info.
102
118
  * `--format` (`-f`) - Format to generate the sprite(s) stylesheet(s). Either "css" or "scss".
119
+ * `--mixin` - Choose to use the Mixin Directives instead of Placeholder Selector.
103
120
  * `--horizontal` - Changes the sprite orientation to horizontal, since all sprites are combined vertically by default.
104
121
  * `--save` - Saves the provided arguments for later use.
105
122
  * `--spacing` - Add some spacing between the images in the sprite.
@@ -13,6 +13,7 @@ module Spriteful
13
13
  class_option :destination, aliases: '-d', banner: 'DESTINATION_DIR', type: :string, desc: 'Destination directory to save the combined image(s).', default: Dir.pwd
14
14
  class_option :root, aliases: '-r', banner: 'ROOT_DIR', type: :string, desc: 'Root folder from where your static files will be served.'
15
15
 
16
+ class_option :mixin, type: :boolean, desc: 'Choose to use the Mixin Directives instead of Placeholder Selectors.'
16
17
  class_option :rails, type: :boolean, desc: 'Follow default conventions for a Rails application with the Asset Pipeline.'
17
18
  class_option :horizontal, type: :boolean, desc: 'Change the sprite orientation to "horizontal".'
18
19
  class_option :save, type: :boolean, desc: 'Save the supplied arguments to ".spritefulrc".'
@@ -79,7 +80,8 @@ module Spriteful
79
80
  {
80
81
  root: options.root,
81
82
  format: options.format,
82
- rails: options.rails?
83
+ rails: options.rails?,
84
+ mixin: options.mixin?
83
85
  }
84
86
  end
85
87
 
@@ -20,6 +20,7 @@ module Spriteful
20
20
  # destination - the directory where the Stylesheet will be created.
21
21
  # options - additional Hash of options.
22
22
  # :format - the Stylesheet format.
23
+ # :mixin - Use mixins instead of Placeholder selector in the SCSS format.
23
24
  # :rails - A flag to generate Asset Pipeline compatible Stylesheets.
24
25
  def initialize(sprite, destination, options = {})
25
26
  @sprite = sprite
@@ -29,7 +30,8 @@ module Spriteful
29
30
  @root = Pathname.new(File.expand_path(options[:root]))
30
31
  end
31
32
  @format = options[:format]
32
- @rails = options.fetch(:rails) { false }
33
+ @mixin = options.fetch(:mixin, false)
34
+ @rails = options.fetch(:rails, false)
33
35
 
34
36
  @path = @destination.join(name)
35
37
  end
@@ -55,11 +57,26 @@ module Spriteful
55
57
 
56
58
  protected
57
59
 
58
- # Internal: returns the 'rails ' flag.
60
+ # Internal: returns the 'rails' flag.
59
61
  def rails?
60
62
  @rails
61
63
  end
62
64
 
65
+ # Internal: returns the 'mixin' flag.
66
+ def mixin?
67
+ @mixin
68
+ end
69
+
70
+ # Internal: select the extension prefix for the SCSS selector.
71
+ def extension_prefix
72
+ mixin? ? '@mixin ' : '%'
73
+ end
74
+
75
+ # Internal: select the extension strategy for the SCSS selector.
76
+ def extension_strategy
77
+ mixin? ? '@include ' : '@extend %'
78
+ end
79
+
63
80
  # Internal: defines the file extension to be used with
64
81
  # Rails applications, since we need to account for the ERB
65
82
  # preprocessing of plain CSS files.
@@ -1,15 +1,20 @@
1
1
  // ============================================================================
2
2
  // This Stylesheet was generated by the 'spriteful' gem.
3
+ <%- if mixin? -%>
4
+ // Below there are several [Mixin Directives]
5
+ // (http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#mixins)
6
+ <%- else -%>
3
7
  // Below there are several [Placeholder Selectors]
4
8
  // (http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#placeholder_selectors_)
9
+ <%- end -%>
5
10
  // to use the '<%= sprite.name %>' sprite on your SCSS code, as in:
6
11
  //
7
12
  // .my-thing {
8
- // @extend %<%= class_name_for(sprite) %>-sprite-<%= class_name_for(sprite.images.first) %>;
13
+ // <%= extension_strategy %><%= class_name_for(sprite) %>-sprite-<%= class_name_for(sprite.images.first) %>;
9
14
  // // Your styles here.
10
15
  // }
11
16
 
12
- %<%= class_name_for(sprite) %>-sprite {
17
+ <%= extension_prefix %><%= class_name_for(sprite) %>-sprite {
13
18
  <%- if rails? -%>
14
19
  background-image: image-url('<%= image_url(sprite) %>');
15
20
  <%- else -%>
@@ -18,8 +23,8 @@
18
23
  background-repeat: no-repeat;
19
24
  }
20
25
  <% sprite.each_image do |image| %>
21
- %<%= class_name_for(sprite) %>-sprite-<%= class_name_for(image) %> {
22
- @extend %<%= class_name_for(sprite) %>-sprite;
26
+ <%= extension_prefix %><%= class_name_for(sprite) %>-sprite-<%= class_name_for(image) %> {
27
+ <%= extension_strategy %><%= class_name_for(sprite) %>-sprite;
23
28
  background-position: <%= image.left %>px <%= image.top %>px;
24
29
  }
25
30
  <% end %>
@@ -92,12 +92,26 @@ describe Spriteful::Sprite do
92
92
  expect(red.left).to eq(0)
93
93
  end
94
94
 
95
+ it 'accounts the spacing option when setting the "left" attribute of each image on a horizontal sprite' do
96
+ sprite = Spriteful::Sprite.new(source, destination, spacing: 10, horizontal: true)
97
+ blue, red = sprite.images.to_a
98
+
99
+ expect(blue.top).to eq(0)
100
+ expect(blue.left).to eq(0)
101
+
102
+ expect(red.top).to eq(0)
103
+ expect(red.left).to eq(-20)
104
+ end
105
+
95
106
  it 'accounts the spacing option when setting the "top" attribute of each image' do
96
107
  sprite = Spriteful::Sprite.new(source, destination, spacing: 10)
97
108
  blue, red = sprite.images.to_a
98
109
 
99
110
  expect(blue.top).to eq(0)
111
+ expect(blue.left).to eq(0)
112
+
100
113
  expect(red.top).to eq(-20)
114
+ expect(red.left).to eq(0)
101
115
  end
102
116
  end
103
117
  end
@@ -24,5 +24,16 @@ describe Spriteful::Stylesheet do
24
24
  expect(output).to match(/%simple-sprite-blue \{/)
25
25
  expect(output).to match(/%simple-sprite-red \{/)
26
26
  end
27
+
28
+ it 'renders the SCSS format using mixin' do
29
+ sprite = Spriteful::Sprite.new(source, destination)
30
+ stylesheet = Spriteful::Stylesheet.new(sprite, destination, format: 'scss', mixin: true)
31
+ output = stylesheet.render
32
+
33
+ expect(output).to match(/@mixin simple-sprite \{/)
34
+ expect(output).to match(/@mixin simple-sprite-blue \{/)
35
+ expect(output).to match(/@include simple-sprite;/)
36
+ expect(output).to match(/@mixin simple-sprite-red \{/)
37
+ end
27
38
  end
28
39
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spriteful
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lucas Mazza
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-08-28 00:00:00.000000000 Z
11
+ date: 2013-09-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor