lemonade 0.3.4 → 0.3.5

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,6 +1,29 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
+ 1.0.1.deprecated.1, 0.3.5*
5
+ --------------------------
6
+
7
+ * Deprecated everything
8
+
9
+ \* just to be sure that the deprication will be installed
10
+
11
+
12
+ 1.0.0.beta.1
13
+ ------------
14
+
15
+ * Fixed warnings generated by Compass
16
+ * Now works perfectly, if larger spacing is defined after smaller spacing
17
+ * Removed Compass dependencies
18
+ * New Sass functions: `sprite-url()` and `sprite-position()`
19
+ * Mixins: `sprite-image`, `sizes-sprite-image`, `sprite-folder`, `sized-sprite-folder`
20
+ * Internal changes:
21
+ * Switched to Bundler
22
+ * Rewritten calculation (all Y positions are calculated after CSS is generated by Sass)
23
+ * Moved integration to `Sass::Tree::RootNode` (works the same for Rails 2.3, 3.0, Compass & Staticmatic)
24
+ * Added more specs
25
+
26
+
4
27
  0.3.4
5
28
  -----
6
29
 
@@ -47,4 +70,4 @@ Changelog
47
70
  0.1.0
48
71
  -----
49
72
 
50
- * Initial release
73
+ * Initial release
data/README.md CHANGED
@@ -1,123 +1,28 @@
1
- Lemonade—On the fly sprite generator for Sass/Compass
2
- =====================================================
1
+ Lemonade is deprecated
2
+ ======================
3
3
 
4
- Please read my [blog post on CSS sprites for Sass/Compass](http://www.hagenburger.net/BLOG/Lemonade-CSS-Sprites-for-Sass-Compass.html) or have a look at the presentation [3 steps to make better and faster frontends](http://www.slideshare.net/hagenburger/3-steps-to-make-better-faster-frontends) (slides 23—37).
4
+ Lemonade was a [cool way to create sprites](http://www.hagenburger.net/BLOG/Lemonade-CSS-Sprites-for-Sass-Compass.html).
5
+ Now I [merged Lemonade into Compass](http://chriseppstein.github.com/blog/2010/09/11/compass-merging-with-lemonade/) in [v0.11](https://github.com/chriseppstein/compass/tree/v0.11.0) and redefined the API with [Chris Eppstein](https://twitter.com/chriseppstein). Even better, [Scott Davis](https://twitter.com/jetviper21) made some enhancements.
5
6
 
7
+ So thanks for all the buzz for Lemonade and take a look at our Compass
8
+ Sprites implementation:
6
9
 
7
- **Usage ([SCSS or Sass](http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html)):**
10
+ <http://compass-style.org/help/tutorials/spriting/>
8
11
 
9
- .fanta {
10
- background: sprite-image("bottles/fanta.png");
11
- }
12
- .seven-up {
13
- background: sprite-image("bottles/seven-up.png");
14
- }
15
- .coke {
16
- background: sprite-image("cans/coke.png") no-repeat;
17
- }
12
+ Follow @[hagenburger](http://twitter.com/hagenburger) for updates.
18
13
 
19
- **Output (CSS):**
14
+ Cheers,
20
15
 
21
- .fanta {
22
- background: url('/images/bottles.png');
23
- }
24
- .seven-up {
25
- background: url('/images/bottles.png') 0 -50px;
26
- }
27
- .coke {
28
- background: url('/images/cans.png') no-repeat;
29
- }
16
+ Nico)
30
17
 
31
18
 
32
- Background
33
- ----------
19
+ Still need to use Lemonade?
20
+ ---------------------------
34
21
 
35
- * Generates a sprite image for each folder (e. g. “bottles” and “cans”)
36
- * Sets the background position (unless “0 0”)
37
- * It uses the `images_dir` defined by Compass (just like `image-url()`)
38
- * No Rake task needed
39
- * No additional classes
40
- * No configuration
41
- * No RMagick required (but full support for PNG)
22
+ Try to use an older implementation of ChunkyPNG if you get empty PNGs:
42
23
 
24
+ # Gemfile
25
+ gem 'lemonade'
26
+ gem 'chunky_png', '0.11.1'
43
27
 
44
- Installation
45
- ------------
46
-
47
- gem install lemonade
48
-
49
-
50
- Current State
51
- -------------
52
-
53
- * Compass standalone finished
54
- * Rails Sass integration finished
55
- * Staticmatic integration finished
56
- * Haml integration (with “:sass” filter): work in progress
57
-
58
-
59
- Options
60
- -------
61
-
62
- You can pass an additional background position.
63
- It will be added to the calculated position:
64
-
65
- .seven-up {
66
- background: sprite-image("bottles/seven-up.png", 12px, 3px);
67
- }
68
-
69
- Output (assuming the calculated position would be “0 -50px” as shown above):
70
-
71
- .seven-up {
72
- background: url('/images/bottles.png') 12px -47px;
73
- }
74
-
75
- If you need empty space around the current image, this will add 20px transparent space above and below.
76
-
77
- .seven-up {
78
- background: sprite-image("bottles/seven-up.png", 0, 0, 20px);
79
- }
80
-
81
- This one adds 20px above, 30px below:
82
-
83
- .seven-up {
84
- background: sprite-image("bottles/seven-up.png", 0, 0, 20px, 30px);
85
- }
86
-
87
- Right aligned images are possible:
88
-
89
- .seven-up {
90
- background: sprite-image("bottles/seven-up.png", 100%, 4px);
91
- }
92
-
93
- The original image will be placed on the right side of the sprite image.
94
- Use this, if you have a link with an arrow on the right side (like Apple).
95
-
96
-
97
- Note on Patches/Pull Requests
98
- -----------------------------
99
-
100
- * Fork the project.
101
- * Make your feature addition or bug fix.
102
- * Add tests for it. This is important so I don't break it in a
103
- future version unintentionally.
104
- * Commit, do not mess with rakefile, version, or history.
105
- (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
106
- * Send me a pull request. Bonus points for topic branches.
107
-
108
-
109
- Rails 3 Troubleshooting
110
- -----------------------
111
-
112
- If you want to use Lemonade with Rails 3 Please use this compass and haml versions in your Gemfile
113
-
114
- gem 'compass', '0.10.2'
115
- gem 'haml-edge', '3.1.49', :require => 'haml'
116
-
117
-
118
- Copyright
119
- ---------
120
-
121
- Copyright (c) 2010 [Nico Hagenburger](http://www.hagenburger.net).
122
- See MIT-LICENSE for details.
123
- [Follow me](http://twitter.com/hagenburger) on twitter.
28
+ You can find the old Lemonade code in the [master branch](https://github.com/hagenburger/lemonade/tree/master)
@@ -1,65 +1,9 @@
1
- module Lemonade
2
- module SassExtensions
3
- module Functions
4
- end
5
- end
6
- end
1
+ require 'fileutils'
7
2
 
3
+ raise <<-INFO
8
4
 
5
+ Lemonade is deprecated now. You may want to use Compass Sprites from now on. More information:
6
+ https://github.com/hagenburger/lemonade
7
+ #{File.dirname(__FILE__)}/README.md
9
8
 
10
-
11
- require 'rubygems'
12
- require 'compass'
13
-
14
-
15
- # Rails 3.0.0.beta.2+
16
- if defined?(ActiveSupport) && Haml::Util.has?(:public_method, ActiveSupport, :on_load)
17
- require 'haml/template/options'
18
- require 'sass/plugin/configuration'
19
- ActiveSupport.on_load(:before_initialize) do
20
- require 'sass'
21
- require 'sass/plugin'
22
-
23
- module Sass
24
- module Plugin
25
- alias_method :update_stylesheets_without_lemonade, :update_stylesheets
26
- def update_stylesheets
27
- if update_stylesheets_without_lemonade
28
- Lemonade::generate_sprites
29
- end
30
- end
31
- end
32
- end
33
- end
34
- end
35
-
36
- require 'chunky_png'
37
- require File.dirname(__FILE__) + '/lemonade/sass_extensions/functions/lemonade'
38
- require File.dirname(__FILE__) + '/lemonade/lemonade'
39
-
40
- module Sass::Script::Functions
41
- include Lemonade::SassExtensions::Functions::Lemonade
42
- end
43
-
44
- module Compass
45
- class Compiler
46
- alias_method :compile_without_lemonade, :compile
47
- def compile(sass_filename, css_filename)
48
- compile_without_lemonade sass_filename, css_filename
49
- Lemonade::generate_sprites
50
- end
51
- end
52
- end
53
-
54
- module Sass
55
- class Engine
56
- alias_method :render_without_lemonade, :render
57
- def render
58
- if result = render_without_lemonade
59
- Lemonade::generate_sprites
60
- result
61
- end
62
- end
63
- alias_method :to_css, :render
64
- end
65
- end
9
+ INFO
@@ -0,0 +1,3 @@
1
+ module Lemonade
2
+ Version = "0.3.5"
3
+ end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lemonade
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ hash: 25
5
+ prerelease:
5
6
  segments:
6
7
  - 0
7
8
  - 3
8
- - 4
9
- version: 0.3.4
9
+ - 5
10
+ version: 0.3.5
10
11
  platform: ruby
11
12
  authors:
12
13
  - Nico Hagenburger
@@ -14,65 +15,10 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-07-04 00:00:00 +02:00
18
+ date: 2011-05-29 00:00:00 +02:00
18
19
  default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- name: haml
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- segments:
28
- - 3
29
- - 0
30
- - 0
31
- version: 3.0.0
32
- type: :runtime
33
- version_requirements: *id001
34
- - !ruby/object:Gem::Dependency
35
- name: compass
36
- prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
38
- requirements:
39
- - - ">="
40
- - !ruby/object:Gem::Version
41
- segments:
42
- - 0
43
- - 10
44
- - 0
45
- version: 0.10.0
46
- type: :runtime
47
- version_requirements: *id002
48
- - !ruby/object:Gem::Dependency
49
- name: chunky_png
50
- prerelease: false
51
- requirement: &id003 !ruby/object:Gem::Requirement
52
- requirements:
53
- - - ">="
54
- - !ruby/object:Gem::Version
55
- segments:
56
- - 0
57
- - 8
58
- - 0
59
- version: 0.8.0
60
- type: :runtime
61
- version_requirements: *id003
62
- - !ruby/object:Gem::Dependency
63
- name: rspec
64
- prerelease: false
65
- requirement: &id004 !ruby/object:Gem::Requirement
66
- requirements:
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- segments:
70
- - 1
71
- - 2
72
- - 9
73
- version: 1.2.9
74
- type: :development
75
- version_requirements: *id004
20
+ dependencies: []
21
+
76
22
  description: "Generates sprites on the fly by using `background: sprite-image(\"sprites/logo.png\")`. No Photoshop, no RMagick, no Rake task, save your time and have a lemonade."
77
23
  email: gems@hagenburger.net
78
24
  executables: []
@@ -82,27 +28,11 @@ extensions: []
82
28
  extra_rdoc_files:
83
29
  - README.md
84
30
  files:
85
- - .document
86
- - .gitignore
31
+ - lib/lemonade/version.rb
32
+ - lib/lemonade.rb
87
33
  - CHANGELOG.md
88
34
  - MIT-LICENSE
89
35
  - README.md
90
- - Rakefile
91
- - TODO.md
92
- - VERSION
93
- - lemonade.gemspec
94
- - lib/lemonade.rb
95
- - lib/lemonade/lemonade.rb
96
- - lib/lemonade/sass_extensions/functions/lemonade.rb
97
- - spec/images/other_images/more-images/sprites/test.png
98
- - spec/images/other_images/test.png
99
- - spec/images/sprites/10x10.png
100
- - spec/images/sprites/150x10.png
101
- - spec/images/sprites/20x20.png
102
- - spec/images/sprites/30x30.png
103
- - spec/lemonade_spec.rb
104
- - spec/spec.opts
105
- - spec/spec_helper.rb
106
36
  has_rdoc: true
107
37
  homepage: http://github.com/hagenburger/lemonade
108
38
  licenses: []
@@ -113,26 +43,29 @@ rdoc_options:
113
43
  require_paths:
114
44
  - lib
115
45
  required_ruby_version: !ruby/object:Gem::Requirement
46
+ none: false
116
47
  requirements:
117
48
  - - ">="
118
49
  - !ruby/object:Gem::Version
50
+ hash: 3
119
51
  segments:
120
52
  - 0
121
53
  version: "0"
122
54
  required_rubygems_version: !ruby/object:Gem::Requirement
55
+ none: false
123
56
  requirements:
124
57
  - - ">="
125
58
  - !ruby/object:Gem::Version
59
+ hash: 3
126
60
  segments:
127
61
  - 0
128
62
  version: "0"
129
63
  requirements: []
130
64
 
131
65
  rubyforge_project:
132
- rubygems_version: 1.3.6
66
+ rubygems_version: 1.6.1
133
67
  signing_key:
134
68
  specification_version: 3
135
69
  summary: On the fly sprite generator for Sass/Compass
136
- test_files:
137
- - spec/lemonade_spec.rb
138
- - spec/spec_helper.rb
70
+ test_files: []
71
+
data/.document DELETED
@@ -1,5 +0,0 @@
1
- README.rdoc
2
- lib/**/*.rb
3
- bin/*
4
- features/**/*.feature
5
- LICENSE
data/.gitignore DELETED
@@ -1,21 +0,0 @@
1
- ## MAC OS
2
- .DS_Store
3
-
4
- ## TEXTMATE
5
- *.tmproj
6
- tmtags
7
-
8
- ## EMACS
9
- *~
10
- \#*
11
- .\#*
12
-
13
- ## VIM
14
- *.swp
15
-
16
- ## PROJECT::GENERAL
17
- coverage
18
- rdoc
19
- pkg
20
-
21
- ## PROJECT::SPECIFIC
data/Rakefile DELETED
@@ -1,47 +0,0 @@
1
- require 'rubygems'
2
- require 'rake'
3
-
4
- begin
5
- require 'jeweler'
6
- Jeweler::Tasks.new do |gem|
7
- gem.name = "lemonade"
8
- gem.summary = "On the fly sprite generator for Sass/Compass"
9
- gem.description = "Generates sprites on the fly by using `background: sprite-image(\"sprites/logo.png\")`. No Photoshop, no RMagick, no Rake task, save your time and have a lemonade."
10
- gem.email = "gems@hagenburger.net"
11
- gem.homepage = "http://github.com/hagenburger/lemonade"
12
- gem.authors = ["Nico Hagenburger"]
13
- gem.add_dependency "haml", ">= 3.0.0"
14
- gem.add_dependency "compass", ">= 0.10.0"
15
- gem.add_dependency "chunky_png", ">= 0.8.0"
16
- gem.add_development_dependency "rspec", ">= 1.2.9"
17
- end
18
- Jeweler::GemcutterTasks.new
19
- rescue LoadError
20
- puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
21
- end
22
-
23
- require 'spec/rake/spectask'
24
- Spec::Rake::SpecTask.new(:spec) do |spec|
25
- spec.libs << 'lib' << 'spec'
26
- spec.spec_files = FileList['spec/**/*_spec.rb']
27
- end
28
-
29
- Spec::Rake::SpecTask.new(:rcov) do |spec|
30
- spec.libs << 'lib' << 'spec'
31
- spec.pattern = 'spec/**/*_spec.rb'
32
- spec.rcov = true
33
- end
34
-
35
- task :spec => :check_dependencies
36
-
37
- task :default => :spec
38
-
39
- require 'rake/rdoctask'
40
- Rake::RDocTask.new do |rdoc|
41
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
42
-
43
- rdoc.rdoc_dir = 'rdoc'
44
- rdoc.title = "lemonade #{version}"
45
- rdoc.rdoc_files.include('README*')
46
- rdoc.rdoc_files.include('lib/**/*.rb')
47
- end
data/TODO.md DELETED
@@ -1,4 +0,0 @@
1
- Todo
2
- ====
3
-
4
- * Remove Compass from requirements (should work with Sass only)
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.3.4
@@ -1,73 +0,0 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
- # -*- encoding: utf-8 -*-
5
-
6
- Gem::Specification.new do |s|
7
- s.name = %q{lemonade}
8
- s.version = "0.3.4"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Nico Hagenburger"]
12
- s.date = %q{2010-07-04}
13
- s.description = %q{Generates sprites on the fly by using `background: sprite-image("sprites/logo.png")`. No Photoshop, no RMagick, no Rake task, save your time and have a lemonade.}
14
- s.email = %q{gems@hagenburger.net}
15
- s.extra_rdoc_files = [
16
- "README.md"
17
- ]
18
- s.files = [
19
- ".document",
20
- ".gitignore",
21
- "CHANGELOG.md",
22
- "MIT-LICENSE",
23
- "README.md",
24
- "Rakefile",
25
- "TODO.md",
26
- "VERSION",
27
- "lemonade.gemspec",
28
- "lib/lemonade.rb",
29
- "lib/lemonade/lemonade.rb",
30
- "lib/lemonade/sass_extensions/functions/lemonade.rb",
31
- "spec/images/other_images/more-images/sprites/test.png",
32
- "spec/images/other_images/test.png",
33
- "spec/images/sprites/10x10.png",
34
- "spec/images/sprites/150x10.png",
35
- "spec/images/sprites/20x20.png",
36
- "spec/images/sprites/30x30.png",
37
- "spec/lemonade_spec.rb",
38
- "spec/spec.opts",
39
- "spec/spec_helper.rb"
40
- ]
41
- s.homepage = %q{http://github.com/hagenburger/lemonade}
42
- s.rdoc_options = ["--charset=UTF-8"]
43
- s.require_paths = ["lib"]
44
- s.rubygems_version = %q{1.3.6}
45
- s.summary = %q{On the fly sprite generator for Sass/Compass}
46
- s.test_files = [
47
- "spec/lemonade_spec.rb",
48
- "spec/spec_helper.rb"
49
- ]
50
-
51
- if s.respond_to? :specification_version then
52
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
53
- s.specification_version = 3
54
-
55
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
56
- s.add_runtime_dependency(%q<haml>, [">= 3.0.0"])
57
- s.add_runtime_dependency(%q<compass>, [">= 0.10.0"])
58
- s.add_runtime_dependency(%q<chunky_png>, [">= 0.8.0"])
59
- s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
60
- else
61
- s.add_dependency(%q<haml>, [">= 3.0.0"])
62
- s.add_dependency(%q<compass>, [">= 0.10.0"])
63
- s.add_dependency(%q<chunky_png>, [">= 0.8.0"])
64
- s.add_dependency(%q<rspec>, [">= 1.2.9"])
65
- end
66
- else
67
- s.add_dependency(%q<haml>, [">= 3.0.0"])
68
- s.add_dependency(%q<compass>, [">= 0.10.0"])
69
- s.add_dependency(%q<chunky_png>, [">= 0.8.0"])
70
- s.add_dependency(%q<rspec>, [">= 1.2.9"])
71
- end
72
- end
73
-
@@ -1,19 +0,0 @@
1
- module Lemonade
2
- def self.generate_sprites
3
- if $lemonade_sprites
4
- $lemonade_sprites.each do |sprite_name, sprite|
5
- sprite_image = ChunkyPNG::Image.new(sprite[:width], sprite[:height], ChunkyPNG::Color::TRANSPARENT)
6
- y = 0
7
- sprite[:images].each do |image|
8
- file = File.join(Compass.configuration.images_path, image[:file])
9
- single_image = ChunkyPNG::Image.from_file(file)
10
- x = (sprite[:width] - image[:width]) * image[:x]
11
- sprite_image.replace single_image, x, image[:y]
12
- end
13
- file = File.join(Compass.configuration.images_path, "#{ sprite_name }.png")
14
- sprite_image.save file
15
- end
16
- $lemonade_sprites = nil
17
- end
18
- end
19
- end
@@ -1,56 +0,0 @@
1
- module Lemonade::SassExtensions::Functions::Lemonade
2
-
3
- def sprite_image(file, add_x = nil, add_y = nil, margin_top_or_both = nil, margin_bottom = nil)
4
- assert_type file, :String
5
- unless (file.to_s =~ %r(^"(.+/)?(.+?)/(.+?)\.(png|gif|jpg)"$)) == 0
6
- raise Sass::SyntaxError, 'Please provide a file in a folder: e.g. sprites/button.png'
7
- end
8
- dir, name, filename = $1, $2, $3
9
- filestr = file.to_s.gsub('"', '')
10
-
11
- $lemonade_sprites ||= {}
12
- sprite = $lemonade_sprites["#{ dir }/#{ name }"] ||= {
13
- :height => 0,
14
- :width => 0,
15
- :images => [],
16
- :margin_bottom => 0
17
- }
18
-
19
- if image = sprite[:images].detect{ |image| image[:file] == filestr }
20
- y = image[:y]
21
- else
22
- height = image_height(file).value
23
- width = image_width(file).value
24
- margin_top = calculate_margin_top(sprite, margin_top_or_both, margin_bottom)
25
- x = (add_x and add_x.numerator_units == %w(%)) ? add_x.value / 100 : 0
26
- y = sprite[:height] + margin_top
27
- sprite[:height] += height + margin_top
28
- sprite[:width] = width if width > sprite[:width]
29
- sprite[:images] << { :file => filestr, :height => height, :width => width, :x => x, :y => y }
30
- end
31
-
32
- position = background_position(0, y, add_x, add_y)
33
- output_file = image_url(Sass::Script::String.new("#{ dir }#{ name }.png"))
34
- Sass::Script::String.new("#{ output_file }#{ position }")
35
- end
36
- alias_method :sprite_img, :sprite_image
37
-
38
- private
39
-
40
- def background_position(x, y, add_x, add_y)
41
- y = -y
42
- x = add_x ? add_x.to_s : 0
43
- y += add_y.value if add_y
44
- unless (add_x.nil? or add_x.value == 0) and y == 0
45
- " #{ x } #{ y }#{ 'px' unless y == 0 }"
46
- end
47
- end
48
-
49
- def calculate_margin_top(sprite, margin_top_or_both, margin_bottom)
50
- margin_top_or_both = margin_top_or_both ? margin_top_or_both.value : 0
51
- margin_top = (sprite[:margin_bottom] ||= 0) > margin_top_or_both ? sprite[:margin_bottom] : margin_top_or_both
52
- sprite[:margin_bottom] = margin_bottom ? margin_bottom.value : margin_top_or_both
53
- margin_top
54
- end
55
-
56
- end
@@ -1,119 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
-
3
- describe Lemonade::SassExtensions::Functions::Lemonade do
4
- before :each do
5
- @sass = Sass::Environment.new
6
- $lemonade_sprites = nil
7
- $lemonade_margin_bottom = nil
8
- FileUtils.cp_r File.dirname(__FILE__) + '/images', IMAGES_TMP_PATH
9
- end
10
-
11
- after :each do
12
- FileUtils.rm_r IMAGES_TMP_PATH
13
- end
14
-
15
- def image_size(file)
16
- Lemonade::generate_sprites
17
- IO.read(IMAGES_TMP_PATH + '/' + file)[0x10..0x18].unpack('NN')
18
- end
19
-
20
- def evaluate(value)
21
- Sass::Script::Parser.parse(value, 0, 0).perform(@sass).to_s
22
- end
23
-
24
- it "should return the sprite file name" do
25
- evaluate('sprite-image("sprites/30x30.png")').should == "url('/sprites.png')"
26
- end
27
-
28
- it "should also work with `sprite-img`" do
29
- evaluate('sprite-img("sprites/30x30.png")').should == "url('/sprites.png')"
30
- end
31
-
32
- it "should work in folders with dashes and underscores" do
33
- evaluate('sprite-image("other_images/more-images/sprites/test.png")').should ==
34
- "url('/other_images/more-images/sprites.png')"
35
- end
36
-
37
- it "should not work without any folder" do
38
- lambda { evaluate('sprite-image("test.png")') }.should raise_exception(Sass::SyntaxError)
39
- end
40
-
41
- it "should set the background position" do
42
- evaluate('sprite-image("sprites/30x30.png")').should == "url('/sprites.png')"
43
- evaluate('sprite-image("sprites/150x10.png")').should == "url('/sprites.png') 0 -30px"
44
- image_size('sprites.png').should == [150, 40]
45
- end
46
-
47
- it "should use the X position" do
48
- evaluate('sprite-image("sprites/30x30.png", 5px, 0)').should == "url('/sprites.png') 5px 0"
49
- image_size('sprites.png').should == [30, 30]
50
- end
51
-
52
- it "should calculate 20px empty space between sprites" do
53
- # Resulting sprite should look like (1 line = 10px height, X = placed image):
54
-
55
- # X
56
- #
57
- #
58
- # XX
59
- # XX
60
- #
61
- #
62
- # XXX
63
- # XXX
64
- # XXX
65
-
66
- evaluate('sprite-image("sprites/10x10.png")').should == "url('/sprites.png')"
67
- # space before #2: 20px
68
- evaluate('sprite-image("sprites/20x20.png", 0, 0, 20px)').should == "url('/sprites.png') 0 -30px"
69
- # space after #2: 20px
70
- evaluate('sprite-image("sprites/30x30.png")').should == "url('/sprites.png') 0 -70px"
71
- image_size('sprites.png').should == [30, 100]
72
- end
73
-
74
- it "should calculate empty space between sprites and combine space like CSS margins" do
75
- # Resulting sprite should look like (1 line = 10px height, X = placed image):
76
-
77
- # X
78
- #
79
- #
80
- #
81
- # XX
82
- # XX
83
- #
84
- # XXX
85
- # XXX
86
- # XXX
87
-
88
- evaluate('sprite-image("sprites/10x10.png", 0, 0, 0, 30px)').should == "url('/sprites.png')"
89
- # space between #1 and #2: 30px (=> 30px > 20px)
90
- evaluate('sprite-image("sprites/20x20.png", 0, 0, 20px, 5px)').should == "url('/sprites.png') 0 -40px"
91
- # space between #2 and #3: 10px (=> 5px < 10px)
92
- evaluate('sprite-image("sprites/30x30.png", 0, 0, 10px)').should == "url('/sprites.png') 0 -70px"
93
- image_size('sprites.png').should == [30, 100]
94
- end
95
-
96
- it "should calculate empty space correctly when 2 output images are uses" do
97
- evaluate('sprite-image("sprites/10x10.png", 0, 0, 0, 30px)').should == "url('/sprites.png')"
98
- evaluate('sprite-image("other_images/test.png")').should == "url('/other_images.png')"
99
- evaluate('sprite-image("sprites/20x20.png", 0, 0, 20px, 5px)').should == "url('/sprites.png') 0 -40px"
100
- end
101
-
102
- it "should allow % for x positions" do
103
- # Resulting sprite should look like (1 line = 10px height, X = placed image):
104
-
105
- # XXXXXXXXXXXXXXX
106
- # X
107
-
108
- evaluate('sprite-image("sprites/150x10.png")')
109
- evaluate('sprite-image("sprites/10x10.png", 100%)').should == "url('/sprites.png') 100% -10px"
110
- end
111
-
112
- it "should not compose the same image twice" do
113
- evaluate('sprite-image("sprites/10x10.png")').should == "url('/sprites.png')"
114
- evaluate('sprite-image("sprites/20x20.png")').should == "url('/sprites.png') 0 -10px"
115
- evaluate('sprite-image("sprites/20x20.png")').should == "url('/sprites.png') 0 -10px" # reuse image from line above
116
- image_size('sprites.png').should == [20, 30]
117
- end
118
-
119
- end
@@ -1,4 +0,0 @@
1
- --colour
2
- --format s
3
- --loadby mtime
4
- --reverse
@@ -1,12 +0,0 @@
1
- $LOAD_PATH.unshift(File.dirname(__FILE__))
2
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
- require 'lemonade'
4
- require 'spec'
5
- require 'spec/autorun'
6
-
7
- IMAGES_TMP_PATH = File.dirname(__FILE__) + '/images-tmp'
8
- Compass.configuration.images_path = IMAGES_TMP_PATH
9
-
10
- Spec::Runner.configure do |config|
11
-
12
- end