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.
- data/CHANGELOG.md +24 -1
- data/README.md +17 -112
- data/lib/lemonade.rb +6 -62
- data/lib/lemonade/version.rb +3 -0
- metadata +16 -83
- data/.document +0 -5
- data/.gitignore +0 -21
- data/Rakefile +0 -47
- data/TODO.md +0 -4
- data/VERSION +0 -1
- data/lemonade.gemspec +0 -73
- data/lib/lemonade/lemonade.rb +0 -19
- data/lib/lemonade/sass_extensions/functions/lemonade.rb +0 -56
- data/spec/images/other_images/more-images/sprites/test.png +0 -0
- data/spec/images/other_images/test.png +0 -0
- data/spec/images/sprites/10x10.png +0 -0
- data/spec/images/sprites/150x10.png +0 -0
- data/spec/images/sprites/20x20.png +0 -0
- data/spec/images/sprites/30x30.png +0 -0
- data/spec/lemonade_spec.rb +0 -119
- data/spec/spec.opts +0 -4
- data/spec/spec_helper.rb +0 -12
data/CHANGELOG.md
CHANGED
@@ -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
|
2
|
-
|
1
|
+
Lemonade is deprecated
|
2
|
+
======================
|
3
3
|
|
4
|
-
|
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
|
-
|
10
|
+
<http://compass-style.org/help/tutorials/spriting/>
|
8
11
|
|
9
|
-
|
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
|
-
|
14
|
+
Cheers,
|
20
15
|
|
21
|
-
|
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
|
-
|
33
|
-
|
19
|
+
Still need to use Lemonade?
|
20
|
+
---------------------------
|
34
21
|
|
35
|
-
|
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
|
-
|
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)
|
data/lib/lemonade.rb
CHANGED
@@ -1,65 +1,9 @@
|
|
1
|
-
|
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
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lemonade
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 25
|
5
|
+
prerelease:
|
5
6
|
segments:
|
6
7
|
- 0
|
7
8
|
- 3
|
8
|
-
-
|
9
|
-
version: 0.3.
|
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:
|
18
|
+
date: 2011-05-29 00:00:00 +02:00
|
18
19
|
default_executable:
|
19
|
-
dependencies:
|
20
|
-
|
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
|
-
- .
|
86
|
-
- .
|
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.
|
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
|
-
|
138
|
-
- spec/spec_helper.rb
|
70
|
+
test_files: []
|
71
|
+
|
data/.document
DELETED
data/.gitignore
DELETED
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
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.3.4
|
data/lemonade.gemspec
DELETED
@@ -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
|
-
|
data/lib/lemonade/lemonade.rb
DELETED
@@ -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
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/spec/lemonade_spec.rb
DELETED
@@ -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
|
data/spec/spec.opts
DELETED
data/spec/spec_helper.rb
DELETED
@@ -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
|