sprite-generator 0.1.10 → 0.1.11

Sign up to get free protection for your applications and to get access to all the features.
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