sprite-generator 0.1.10 → 0.1.11

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.
data/README.md CHANGED
@@ -72,7 +72,7 @@ Configuration of `sprite-generator` is done via `config/sprite.yml`. It allows y
72
72
  - `default_format:` defines the default file image format of the generated files. (defaults to `png`)
73
73
  - `default_spacing:` defines the default pixel spacing between sprites (defaults to 0)
74
74
  - `class_separator:` used to generated the class name by separating the image name and sprite name (defaults to `-`)
75
- - `pseudo_classes`: array of strings. Example: if some image name will end with `_hover` and `pseudo_classes` will equal `['hover']`, then the style for that picture will end with `:hover` instead of `_hover`. (defaults to ['hover'])
75
+ - `pseudo_classes`: array of strings. Example: if some image name will end with `_hover` and `pseudo_classes` will equal `['hover']`, then the style for that picture will end with `:hover` instead of `_hover`. (defaults to ['hover']). Supported only for CSS files
76
76
  - `parameters`: hash of parameters that will be substituted in other options. In order to be used parameter must be declared in parameters hash and have a default value. Parameter can be overriden in command line: `sprite -p param_name=new_param_value`. (defaults to `{}`)
77
77
 
78
78
  * `images:` section provides an array of configurations which define which image files are built, and where they get their sprites from. each image setup provides the following config options:
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.10
1
+ 0.1.11
@@ -14,20 +14,49 @@ module Sprite
14
14
  File.open(File.join(Sprite.root, path), 'w') do |f|
15
15
  # write stylesheet file to disk
16
16
  sprite_files.each do |sprite_file, sprites|
17
+ sprites_with_pseudo_classes = []
18
+ print_style_body = lambda do |sprite|
19
+ f.puts " {"
20
+ f.puts " background: url('/#{@builder.config['image_output_path']}#{sprite_file}') no-repeat #{sprite[:x]}px #{sprite[:y]}px;"
21
+ f.puts " width: #{sprite[:width]}px;"
22
+ f.puts " height: #{sprite[:height]}px;"
23
+ f.puts "}"
24
+ end
25
+
26
+ # first all the styles without pseudo classes are printed
27
+ # styles with pseudo classes are copied to separate array
17
28
  sprites.each do |sprite|
29
+ if sprite[:name] =~ /_(#{@builder.config['pseudo_classes'].join "|"})$/
30
+ sprites_with_pseudo_classes << sprite
31
+ else
32
+ f.print "#{sprites_class}.#{sprite[:group]}#{@builder.config['class_separator']}#{sprite[:name]}"
33
+ print_style_body.call sprite
34
+ end
35
+ end
36
+
37
+ # sort styles by pseudo class name
38
+ # this ensures that the order of styles with pseudo classes is the same
39
+ # as the order of pseudo classes supplied in config
40
+ #
41
+ # for example if pseudo_classes = ['hover', 'active'] then
42
+ # styles with pseudo class 'active' will always be printed into CSS file
43
+ # after the styles with pseudo class 'hover'
44
+ # this addresses issue #1 ( http://github.com/iast/sprite-generator/issues/1/find )
45
+ sprites_with_pseudo_classes.sort! do |s1, s2|
46
+ @builder.config['pseudo_classes'].index(s1[:name].scan(/[^_]+$/)[0]) <=>
47
+ @builder.config['pseudo_classes'].index(s2[:name].scan(/[^_]+$/)[0])
48
+ end
49
+ # print styles with pseudo classes into file
50
+ sprites_with_pseudo_classes.each do |sprite|
18
51
  # if sprite name ends with some of acceptable pseudo classes, add selector for pseudoclass also
19
52
  # for example if the sprite name is 'image_hover' and 'hover' is among acceptable pseudo classes,
20
53
  # also add selector for image:hover
21
- sprite_name = sprite[:name].gsub /(.*)(_)(#{@builder.config['pseudo_classes'].join "|"})$/, '\1:\3'
54
+ rule_with_pc = sprite[:name].gsub /(.*)(_)(#{@builder.config['pseudo_classes'].join "|"})$/, '\1:\3'
22
55
  selector_prefix = "#{sprites_class}.#{sprite[:group]}#{@builder.config['class_separator']}"
23
56
  selector = selector_prefix + sprite[:name]
24
- selector += ", #{selector_prefix}#{sprite_name}" if sprite_name != sprite[:name]
25
-
26
- f.puts "#{selector} {"
27
- f.puts " background: url('/#{@builder.config['image_output_path']}#{sprite_file}') no-repeat #{sprite[:x]}px #{sprite[:y]}px;"
28
- f.puts " width: #{sprite[:width]}px;"
29
- f.puts " height: #{sprite[:height]}px;"
30
- f.puts "}"
57
+ selector += ", #{selector_prefix}#{rule_with_pc}" if rule_with_pc != sprite[:name]
58
+ f.print selector
59
+ print_style_body.call sprite
31
60
  end
32
61
  end
33
62
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{sprite-generator}
8
- s.version = "0.1.10"
8
+ s.version = "0.1.11"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Jacques Crocker", "Anton Styagun"]
12
- s.date = %q{2009-12-01}
12
+ s.date = %q{2010-07-29}
13
13
  s.default_executable = %q{sprite}
14
14
  s.description = %q{sprite-generator is a rails/merb plugin that generates sprites for css, sass}
15
15
  s.email = %q{astyagun@gmail.com}
@@ -40,14 +40,14 @@ Gem::Specification.new do |s|
40
40
  s.homepage = %q{http://github.com/iast/sprite-generator}
41
41
  s.rdoc_options = ["--charset=UTF-8"]
42
42
  s.require_paths = ["lib"]
43
- s.rubygems_version = %q{1.3.5}
43
+ s.rubygems_version = %q{1.3.7}
44
44
  s.summary = %q{generate your css sprites automagically}
45
45
 
46
46
  if s.respond_to? :specification_version then
47
47
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
48
48
  s.specification_version = 3
49
49
 
50
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
50
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
51
51
  else
52
52
  end
53
53
  else
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sprite-generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.10
4
+ hash: 13
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 11
10
+ version: 0.1.11
5
11
  platform: ruby
6
12
  authors:
7
13
  - Jacques Crocker
@@ -10,7 +16,7 @@ autorequire:
10
16
  bindir: bin
11
17
  cert_chain: []
12
18
 
13
- date: 2009-12-01 00:00:00 +02:00
19
+ date: 2010-07-29 00:00:00 +03:00
14
20
  default_executable: sprite
15
21
  dependencies: []
16
22
 
@@ -51,21 +57,27 @@ rdoc_options:
51
57
  require_paths:
52
58
  - lib
53
59
  required_ruby_version: !ruby/object:Gem::Requirement
60
+ none: false
54
61
  requirements:
55
62
  - - ">="
56
63
  - !ruby/object:Gem::Version
64
+ hash: 3
65
+ segments:
66
+ - 0
57
67
  version: "0"
58
- version:
59
68
  required_rubygems_version: !ruby/object:Gem::Requirement
69
+ none: false
60
70
  requirements:
61
71
  - - ">="
62
72
  - !ruby/object:Gem::Version
73
+ hash: 3
74
+ segments:
75
+ - 0
63
76
  version: "0"
64
- version:
65
77
  requirements: []
66
78
 
67
79
  rubyforge_project:
68
- rubygems_version: 1.3.5
80
+ rubygems_version: 1.3.7
69
81
  signing_key:
70
82
  specification_version: 3
71
83
  summary: generate your css sprites automagically