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 +1 -1
- data/VERSION +1 -1
- data/lib/sprite/styles/css_generator.rb +37 -8
- data/sprite-generator.gemspec +4 -4
- metadata +17 -5
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.
|
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
|
-
|
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}#{
|
25
|
-
|
26
|
-
|
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
|
data/sprite-generator.gemspec
CHANGED
@@ -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.
|
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{
|
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.
|
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::
|
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
|
-
|
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:
|
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.
|
80
|
+
rubygems_version: 1.3.7
|
69
81
|
signing_key:
|
70
82
|
specification_version: 3
|
71
83
|
summary: generate your css sprites automagically
|