active_assets 1.1.2 → 1.1.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.
- data/active_assets.gemspec +1 -1
- data/lib/active_assets/active_sprites/runners/abstract_runner.rb +6 -2
- data/lib/active_assets/active_sprites/runners/chunky_png_runner.rb +1 -0
- data/lib/active_assets/active_sprites/runners/mini_magick_runner.rb +1 -0
- data/lib/active_assets/active_sprites/runners/rmagick_runner.rb +3 -1
- data/lib/active_assets/active_sprites/sprite_piece.rb +4 -4
- data/test/active_assets/active_sprites/sprite_piece_test.rb +74 -0
- data/test/support/abstract_runner.rb +12 -0
- metadata +72 -36
data/active_assets.gemspec
CHANGED
@@ -7,8 +7,7 @@ require 'fileutils'
|
|
7
7
|
module ActiveAssets
|
8
8
|
module ActiveSprites
|
9
9
|
class AbstractRunner
|
10
|
-
class
|
11
|
-
end
|
10
|
+
class FileNotFound < StandardError; end
|
12
11
|
|
13
12
|
def initialize(railtie, sprites)
|
14
13
|
@railtie = railtie
|
@@ -85,6 +84,11 @@ module ActiveAssets
|
|
85
84
|
$stdout << "#{Time.now}: ActiveSprites \"I finished my run in #{Time.now - t} seconds.\"\n" if verbose
|
86
85
|
end
|
87
86
|
|
87
|
+
protected
|
88
|
+
def file_exists!(file_path)
|
89
|
+
raise FileNotFound.new("The file you are attempting to add to your sprite, #{file_path}, does not exists.") unless File.exists?(file_path)
|
90
|
+
end
|
91
|
+
|
88
92
|
private
|
89
93
|
def image_computed_path(path)
|
90
94
|
File.join('images', path)
|
@@ -13,6 +13,7 @@ module ActiveAssets
|
|
13
13
|
|
14
14
|
image_list = sprite_pieces.map do |sp|
|
15
15
|
sprite_piece_path = image_computed_full_path(sp.path)
|
16
|
+
file_exists!(sprite_piece_path)
|
16
17
|
sp_image = ChunkyPNG::Image.from_file(sprite_piece_path)
|
17
18
|
sp.details = SpritePiece::Details.new(
|
18
19
|
sprite_url(sprite, sprite_path),
|
@@ -10,7 +10,9 @@ module ActiveAssets
|
|
10
10
|
private
|
11
11
|
def set_sprite_details_and_return_image_list(sprite, sprite_path, sprite_pieces, orientation)
|
12
12
|
sprite_piece_paths = sprite_pieces.map do |sp|
|
13
|
-
image_computed_full_path(sp.path)
|
13
|
+
path = image_computed_full_path(sp.path)
|
14
|
+
file_exists!(path)
|
15
|
+
path
|
14
16
|
end
|
15
17
|
image_list = ImageList.new(*sprite_piece_paths)
|
16
18
|
|
@@ -22,8 +22,8 @@ module ActiveAssets
|
|
22
22
|
|
23
23
|
Details = Struct.new(:sprite_path, :x, :y, :width, :height)
|
24
24
|
|
25
|
-
|
26
|
-
attr_reader(*
|
25
|
+
CSS_PROPS = [:x, :y, :repeat, :width, :height, :important]
|
26
|
+
attr_reader(*CSS_PROPS)
|
27
27
|
attr_accessor :details
|
28
28
|
delegate :path, :css_selector, :to => :mapping
|
29
29
|
|
@@ -42,7 +42,7 @@ module ActiveAssets
|
|
42
42
|
{
|
43
43
|
width:#{width || "#{details.width}px"};
|
44
44
|
height:#{height || "#{details.height}px"};
|
45
|
-
background:url('#{details.sprite_path}?#{Time.now.to_i}') no-repeat #{x || "#{-details.x}px"} #{y || "#{-details.y}px"};
|
45
|
+
background:url('#{details.sprite_path}?#{Time.now.to_i}') #{repeat || "no-repeat"} #{x || "#{-details.x}px"} #{y || "#{-details.y}px"}#{" !important" if important};
|
46
46
|
display:block;
|
47
47
|
}
|
48
48
|
CSS
|
@@ -52,7 +52,7 @@ module ActiveAssets
|
|
52
52
|
"|\t#{path}\t|\t#{css_selector}\t|\t#{details.x}\t|\t#{details.y}\t|\t#{details.width}\t|\t#{details.height}\t|\n"
|
53
53
|
end
|
54
54
|
|
55
|
-
|
55
|
+
CSS_PROPS.each do |prop|
|
56
56
|
eval <<-METH
|
57
57
|
def #{prop}(*args)
|
58
58
|
#{prop}, *_ = args
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'helper'
|
2
|
+
require 'css_parser'
|
2
3
|
|
3
4
|
class SpritePiecetest < Test::Unit::TestCase
|
4
5
|
def setup
|
@@ -6,9 +7,66 @@ class SpritePiecetest < Test::Unit::TestCase
|
|
6
7
|
end
|
7
8
|
|
8
9
|
def teardown
|
10
|
+
FileUtils.rm_rf(Rails.root.join('public/images/sprites'))
|
11
|
+
FileUtils.rm_rf(Rails.root.join('public/stylesheets/sprites'))
|
12
|
+
|
9
13
|
tear_down_assets
|
10
14
|
end
|
11
15
|
|
16
|
+
def important_rendered(important = false)
|
17
|
+
sp_options = {"sprite_images/sprite3/1.png" => ".klass_1"}
|
18
|
+
sp_options.update(:important => important) if important
|
19
|
+
|
20
|
+
Rails.application.sprites do
|
21
|
+
sprite :sprite2 do
|
22
|
+
sp sp_options
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
ENV['SPRITE'] = 'sprite2'
|
27
|
+
|
28
|
+
Rails.application.sprites.generate!
|
29
|
+
|
30
|
+
parser = CssParser::Parser.new
|
31
|
+
stylesheet_path = Rails.root.join('public/stylesheets/sprites/sprite2.css')
|
32
|
+
parser.load_file!(File.basename(stylesheet_path), File.dirname(stylesheet_path), :screen)
|
33
|
+
|
34
|
+
important = ''
|
35
|
+
parser.each_rule_set do |rs|
|
36
|
+
next unless rs.selectors.include?('.klass_1')
|
37
|
+
background = rs['background'][%r{\s*([^;]+)}, 1]
|
38
|
+
important = background[%r{\s+(!important)$}, 1]
|
39
|
+
end
|
40
|
+
important
|
41
|
+
end
|
42
|
+
|
43
|
+
def repeat_rendered(repeat = nil)
|
44
|
+
sp_options = {"sprite_images/sprite3/1.png" => ".klass_1"}
|
45
|
+
sp_options.update(:repeat => repeat) unless repeat.nil?
|
46
|
+
|
47
|
+
Rails.application.sprites do
|
48
|
+
sprite :sprite2 do
|
49
|
+
sp sp_options
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
ENV['SPRITE'] = 'sprite2'
|
54
|
+
|
55
|
+
Rails.application.sprites.generate!
|
56
|
+
|
57
|
+
parser = CssParser::Parser.new
|
58
|
+
stylesheet_path = Rails.root.join('public/stylesheets/sprites/sprite2.css')
|
59
|
+
parser.load_file!(File.basename(stylesheet_path), File.dirname(stylesheet_path), :screen)
|
60
|
+
|
61
|
+
repeat = ''
|
62
|
+
parser.each_rule_set do |rs|
|
63
|
+
next unless rs.selectors.include?('.klass_1')
|
64
|
+
background = rs['background'][%r{\s*([^;]+)}, 1]
|
65
|
+
repeat = background[%r{\)\s*([^\s]+)}, 1]
|
66
|
+
end
|
67
|
+
repeat
|
68
|
+
end
|
69
|
+
|
12
70
|
def test_configure_with_block
|
13
71
|
Rails.application.sprites do
|
14
72
|
sprite :sprite1 do
|
@@ -62,4 +120,20 @@ class SpritePiecetest < Test::Unit::TestCase
|
|
62
120
|
|
63
121
|
assert_equal paths, Rails.application.sprites['sprites/4.png'].sprite_pieces.map(&:path)
|
64
122
|
end
|
123
|
+
|
124
|
+
def test_set_repeat
|
125
|
+
assert_equal 'repeat-y', repeat_rendered('repeat-y')
|
126
|
+
end
|
127
|
+
|
128
|
+
def test_do_not_set_repeat
|
129
|
+
assert_equal 'no-repeat', repeat_rendered
|
130
|
+
end
|
131
|
+
|
132
|
+
def test_set_important
|
133
|
+
assert_equal '!important', important_rendered(true)
|
134
|
+
end
|
135
|
+
|
136
|
+
def test_do_not_set_important
|
137
|
+
assert_equal nil, important_rendered
|
138
|
+
end
|
65
139
|
end
|
@@ -29,6 +29,18 @@ module AbstractRunnerTest
|
|
29
29
|
|
30
30
|
Selector = Struct.new(:selector, :x, :y, :width, :height)
|
31
31
|
|
32
|
+
def test_file_does_not_exist
|
33
|
+
Rails.application.sprites do
|
34
|
+
sprite 'sprites/fail.png' do
|
35
|
+
_"sprite_images/sprite3/3.png" => ".klass_1"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
assert_raises(ActiveAssets::ActiveSprites::AbstractRunner::FileNotFound) do
|
40
|
+
Rails.application.sprites.generate!
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
32
44
|
def test_generate
|
33
45
|
sprite = Rails.application.sprites['sprites/4.png']
|
34
46
|
orientation = sprite.orientation
|
metadata
CHANGED
@@ -1,8 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_assets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 21
|
4
5
|
prerelease:
|
5
|
-
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 1
|
9
|
+
- 3
|
10
|
+
version: 1.1.3
|
6
11
|
platform: ruby
|
7
12
|
authors:
|
8
13
|
- Sam Woodard
|
@@ -10,97 +15,128 @@ autorequire:
|
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
17
|
|
13
|
-
date: 2011-
|
18
|
+
date: 2011-05-16 00:00:00 -07:00
|
14
19
|
default_executable:
|
15
20
|
dependencies:
|
16
21
|
- !ruby/object:Gem::Dependency
|
17
|
-
|
18
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
22
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
19
23
|
none: false
|
20
24
|
requirements:
|
21
25
|
- - ">="
|
22
26
|
- !ruby/object:Gem::Version
|
27
|
+
hash: 3
|
28
|
+
segments:
|
29
|
+
- 0
|
23
30
|
version: "0"
|
24
|
-
|
31
|
+
name: oily_png
|
25
32
|
prerelease: false
|
26
|
-
|
33
|
+
type: :development
|
34
|
+
requirement: *id001
|
27
35
|
- !ruby/object:Gem::Dependency
|
28
|
-
|
29
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
36
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
30
37
|
none: false
|
31
38
|
requirements:
|
32
39
|
- - ">="
|
33
40
|
- !ruby/object:Gem::Version
|
41
|
+
hash: 3
|
42
|
+
segments:
|
43
|
+
- 0
|
34
44
|
version: "0"
|
35
|
-
|
45
|
+
name: chunky_png
|
36
46
|
prerelease: false
|
37
|
-
|
47
|
+
type: :development
|
48
|
+
requirement: *id002
|
38
49
|
- !ruby/object:Gem::Dependency
|
39
|
-
|
40
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
50
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
41
51
|
none: false
|
42
52
|
requirements:
|
43
53
|
- - ">="
|
44
54
|
- !ruby/object:Gem::Version
|
55
|
+
hash: 3
|
56
|
+
segments:
|
57
|
+
- 0
|
45
58
|
version: "0"
|
46
|
-
|
59
|
+
name: rmagick
|
47
60
|
prerelease: false
|
48
|
-
|
61
|
+
type: :development
|
62
|
+
requirement: *id003
|
49
63
|
- !ruby/object:Gem::Dependency
|
50
|
-
|
51
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
64
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
52
65
|
none: false
|
53
66
|
requirements:
|
54
67
|
- - ">="
|
55
68
|
- !ruby/object:Gem::Version
|
69
|
+
hash: 3
|
70
|
+
segments:
|
71
|
+
- 0
|
56
72
|
version: "0"
|
57
|
-
|
73
|
+
name: mini_magick
|
58
74
|
prerelease: false
|
59
|
-
|
75
|
+
type: :development
|
76
|
+
requirement: *id004
|
60
77
|
- !ruby/object:Gem::Dependency
|
61
|
-
|
62
|
-
requirement: &id005 !ruby/object:Gem::Requirement
|
78
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
63
79
|
none: false
|
64
80
|
requirements:
|
65
81
|
- - ~>
|
66
82
|
- !ruby/object:Gem::Version
|
83
|
+
hash: 25
|
84
|
+
segments:
|
85
|
+
- 1
|
86
|
+
- 1
|
87
|
+
- 5
|
67
88
|
version: 1.1.5
|
68
|
-
|
89
|
+
name: css_parser
|
69
90
|
prerelease: false
|
70
|
-
|
91
|
+
type: :development
|
92
|
+
requirement: *id005
|
71
93
|
- !ruby/object:Gem::Dependency
|
72
|
-
|
73
|
-
requirement: &id006 !ruby/object:Gem::Requirement
|
94
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
74
95
|
none: false
|
75
96
|
requirements:
|
76
97
|
- - ~>
|
77
98
|
- !ruby/object:Gem::Version
|
99
|
+
hash: 1
|
100
|
+
segments:
|
101
|
+
- 3
|
102
|
+
- 0
|
103
|
+
- 3
|
78
104
|
version: 3.0.3
|
79
|
-
|
105
|
+
name: rails
|
80
106
|
prerelease: false
|
81
|
-
|
107
|
+
type: :development
|
108
|
+
requirement: *id006
|
82
109
|
- !ruby/object:Gem::Dependency
|
83
|
-
|
84
|
-
requirement: &id007 !ruby/object:Gem::Requirement
|
110
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
85
111
|
none: false
|
86
112
|
requirements:
|
87
113
|
- - ">"
|
88
114
|
- !ruby/object:Gem::Version
|
115
|
+
hash: 3
|
116
|
+
segments:
|
117
|
+
- 2
|
118
|
+
- 0
|
89
119
|
version: "2.0"
|
90
|
-
|
120
|
+
name: test-unit
|
91
121
|
prerelease: false
|
92
|
-
|
122
|
+
type: :development
|
123
|
+
requirement: *id007
|
93
124
|
- !ruby/object:Gem::Dependency
|
94
|
-
|
95
|
-
requirement: &id008 !ruby/object:Gem::Requirement
|
125
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
96
126
|
none: false
|
97
127
|
requirements:
|
98
128
|
- - ~>
|
99
129
|
- !ruby/object:Gem::Version
|
130
|
+
hash: 43
|
131
|
+
segments:
|
132
|
+
- 4
|
133
|
+
- 4
|
134
|
+
- 2
|
100
135
|
version: 4.4.2
|
101
|
-
|
136
|
+
name: ZenTest
|
102
137
|
prerelease: false
|
103
|
-
|
138
|
+
type: :development
|
139
|
+
requirement: *id008
|
104
140
|
description: A Railtie that provides an asset management system for css, javascript, and sprites in your Rails applications and engines. ActiveAssets includes two libraries, ActiveExpansions and ActiveSprites. ActiveSprites generates sprites defined by a dsl similar to a route definition. Similarly, ActiveExpansions' dsl creates ActionView::Helpers::AssetTagHelper javascript and stylesheet expansions, and adds additional features
|
105
141
|
email:
|
106
142
|
- sam@wildfireapp.com
|
@@ -240,7 +276,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
240
276
|
requirements:
|
241
277
|
- - ">="
|
242
278
|
- !ruby/object:Gem::Version
|
243
|
-
hash:
|
279
|
+
hash: 3
|
244
280
|
segments:
|
245
281
|
- 0
|
246
282
|
version: "0"
|
@@ -249,7 +285,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
249
285
|
requirements:
|
250
286
|
- - ">="
|
251
287
|
- !ruby/object:Gem::Version
|
252
|
-
hash:
|
288
|
+
hash: 3
|
253
289
|
segments:
|
254
290
|
- 0
|
255
291
|
version: "0"
|