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.
@@ -1,7 +1,7 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  Gem::Specification.new do |s|
3
3
  s.name = "active_assets"
4
- s.version = '1.1.2'
4
+ s.version = '1.1.3'
5
5
  s.platform = Gem::Platform::RUBY
6
6
  s.authors = ["Sam Woodard"]
7
7
  s.email = ["sam@wildfireapp.com"]
@@ -7,8 +7,7 @@ require 'fileutils'
7
7
  module ActiveAssets
8
8
  module ActiveSprites
9
9
  class AbstractRunner
10
- class AssetContext < ActionView::Base
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),
@@ -9,6 +9,7 @@ module ActiveAssets
9
9
 
10
10
  image_list = sprite_pieces.map do |sp|
11
11
  sp_path = image_computed_full_path(sp.path)
12
+ file_exists!(sp_path)
12
13
  image = MiniMagick::Image.open(sp_path)
13
14
  sp.details = SpritePiece::Details.new(
14
15
  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
- GEOMETRY_PROPS = [:x, :y, :width, :height]
26
- attr_reader(*GEOMETRY_PROPS)
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
- GEOMETRY_PROPS.each do |prop|
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
- version: 1.1.2
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-04-24 00:00:00 -07:00
18
+ date: 2011-05-16 00:00:00 -07:00
14
19
  default_executable:
15
20
  dependencies:
16
21
  - !ruby/object:Gem::Dependency
17
- name: oily_png
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
- type: :development
31
+ name: oily_png
25
32
  prerelease: false
26
- version_requirements: *id001
33
+ type: :development
34
+ requirement: *id001
27
35
  - !ruby/object:Gem::Dependency
28
- name: chunky_png
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
- type: :development
45
+ name: chunky_png
36
46
  prerelease: false
37
- version_requirements: *id002
47
+ type: :development
48
+ requirement: *id002
38
49
  - !ruby/object:Gem::Dependency
39
- name: rmagick
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
- type: :development
59
+ name: rmagick
47
60
  prerelease: false
48
- version_requirements: *id003
61
+ type: :development
62
+ requirement: *id003
49
63
  - !ruby/object:Gem::Dependency
50
- name: mini_magick
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
- type: :development
73
+ name: mini_magick
58
74
  prerelease: false
59
- version_requirements: *id004
75
+ type: :development
76
+ requirement: *id004
60
77
  - !ruby/object:Gem::Dependency
61
- name: css_parser
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
- type: :development
89
+ name: css_parser
69
90
  prerelease: false
70
- version_requirements: *id005
91
+ type: :development
92
+ requirement: *id005
71
93
  - !ruby/object:Gem::Dependency
72
- name: rails
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
- type: :development
105
+ name: rails
80
106
  prerelease: false
81
- version_requirements: *id006
107
+ type: :development
108
+ requirement: *id006
82
109
  - !ruby/object:Gem::Dependency
83
- name: test-unit
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
- type: :development
120
+ name: test-unit
91
121
  prerelease: false
92
- version_requirements: *id007
122
+ type: :development
123
+ requirement: *id007
93
124
  - !ruby/object:Gem::Dependency
94
- name: ZenTest
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
- type: :development
136
+ name: ZenTest
102
137
  prerelease: false
103
- version_requirements: *id008
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: 5489205130638636
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: 5489205130638636
288
+ hash: 3
253
289
  segments:
254
290
  - 0
255
291
  version: "0"