Move the lemonade files around to adhere to compass conventions.

This commit is contained in:
Chris Eppstein 2010-09-12 15:34:36 -07:00
parent 6a44d58b7c
commit 62157f6a7e
7 changed files with 69 additions and 91 deletions

View File

@ -4,7 +4,7 @@ end
%w( %w(
selectors enumerate urls display selectors enumerate urls display
inline_image image_size constants gradient_support inline_image image_size constants gradient_support
font_files lists colors trig font_files lists colors trig sprites
).each do |func| ).each do |func|
require "compass/sass_extensions/functions/#{func}" require "compass/sass_extensions/functions/#{func}"
end end
@ -22,6 +22,7 @@ module Sass::Script::Functions
include Compass::SassExtensions::Functions::Lists include Compass::SassExtensions::Functions::Lists
include Compass::SassExtensions::Functions::Colors include Compass::SassExtensions::Functions::Colors
include Compass::SassExtensions::Functions::Trig include Compass::SassExtensions::Functions::Trig
include Compass::SassExtensions::Functions::Sprites
end end
# Wierd that this has to be re-included to pick up sub-modules. Ruby bug? # Wierd that this has to be re-included to pick up sub-modules. Ruby bug?

View File

@ -1,19 +1,78 @@
module Sass::Script::Functions module Compass::SassExtensions::Functions::Sprites
class SpriteInfo < Sass::Script::Literal
attr_reader :sprite
attr_reader :sprite_item
attr_reader :type
def initialize(type, sprite, sprite_item = nil, position_x = nil, position_y_shift = nil)
super(nil)
@type = type
@sprite = sprite
@sprite_item = sprite_item
@position_x = position_x
@position_y_shift = position_y_shift
end
def to_s(opts = {})
case @type
when :position
position
when :url
url
when :both
pos = position
if pos == '0 0'
url
else
"#{url} #{pos}"
end
end
end
def to_sass
to_s
end
private
def position
x = @position_x || 0
if @sprite_item[:index] == 0 and (@position_y_shift.nil? or @position_y_shift.value == 0)
"#{x.inspect} 0"
else
expression = "Compass::Sprites.sprites['#{@sprite[:file]}'][:images][#{@sprite_item[:index]}][:y].unary_minus"
expression << ".plus(Sass::Script::Number.new(#{@position_y_shift.value}, ['px']))" if @position_y_shift
"#{x.inspect} <%= #{expression} %>"
end
end
def url
if defined?(Compass)
compass = Class.new.extend(Compass::SassExtensions::Functions::Urls)
compass.image_url(Sass::Script::String.new(@sprite[:file])).to_s
else
"url('/#{@sprite[:file]}')"
end
end
end
def sprite_url(file) def sprite_url(file)
dir, name, basename = extract_names(file) dir, name, basename = extract_names(file)
sprite = sprite_for("#{dir}#{name}") sprite = sprite_for("#{dir}#{name}")
Sass::Script::SpriteInfo.new(:url, sprite) SpriteInfo.new(:url, sprite)
end end
def sprite_position(file, position_x = nil, position_y_shift = nil, margin_top_or_both = nil, margin_bottom = nil) def sprite_position(file, position_x = nil, position_y_shift = nil, margin_top_or_both = nil, margin_bottom = nil)
sprite, sprite_item = sprite_url_and_position(file, position_x, position_y_shift, margin_top_or_both, margin_bottom) sprite, sprite_item = sprite_url_and_position(file, position_x, position_y_shift, margin_top_or_both, margin_bottom)
Sass::Script::SpriteInfo.new(:position, sprite, sprite_item, position_x, position_y_shift) SpriteInfo.new(:position, sprite, sprite_item, position_x, position_y_shift)
end end
def sprite_image(file, position_x = nil, position_y_shift = nil, margin_top_or_both = nil, margin_bottom = nil) def sprite_image(file, position_x = nil, position_y_shift = nil, margin_top_or_both = nil, margin_bottom = nil)
sprite, sprite_item = sprite_url_and_position(file, position_x, position_y_shift, margin_top_or_both, margin_bottom) sprite, sprite_item = sprite_url_and_position(file, position_x, position_y_shift, margin_top_or_both, margin_bottom)
Sass::Script::SpriteInfo.new(:both, sprite, sprite_item, position_x, position_y_shift) SpriteInfo.new(:both, sprite, sprite_item, position_x, position_y_shift)
end end
alias_method :sprite_img, :sprite_image alias_method :sprite_img, :sprite_image
@ -94,7 +153,7 @@ private
image[:margin_top] = margin_top if margin_top > image[:margin_top] image[:margin_top] = margin_top if margin_top > image[:margin_top]
image[:margin_bottom] = margin_bottom if margin_bottom > image[:margin_bottom] image[:margin_bottom] = margin_bottom if margin_bottom > image[:margin_bottom]
else else
width, height = ImageProperties.new(file).size width, height = Compass::SassExtensions::Functions::ImageSize::ImageProperties.new(file).size
x = (position_x and position_x.numerator_units == %w(%)) ? position_x : Sass::Script::Number.new(0) x = (position_x and position_x.numerator_units == %w(%)) ? position_x : Sass::Script::Number.new(0)
y = sprite[:height] + margin_top y = sprite[:height] + margin_top
y = Sass::Script::Number.new(y, y == 0 ? [] : ['px']) y = Sass::Script::Number.new(y, y == 0 ? [] : ['px'])

View File

@ -1,3 +1,3 @@
%w(traversal).each do |patch| %w(traversal sprites).each do |patch|
require "compass/sass_extensions/monkey_patches/#{patch}" require "compass/sass_extensions/monkey_patches/#{patch}"
end end

View File

@ -1,5 +1,4 @@
require 'chunky_png' require 'chunky_png'
require 'compass/sprites/sprite_info'
module Compass::Sprites module Compass::Sprites
@@sprites = {} @@sprites = {}
@ -42,13 +41,6 @@ module Compass::Sprites
end end
end end
def extend_sass!
require 'sass'
require 'sass/plugin'
require 'compass/sprites/sass_functions'
require 'compass/sprites/sass_extension'
end
def sprite_changed?(sprite_name, sprite) def sprite_changed?(sprite_name, sprite)
existing_sprite_info = YAML.load(File.read(sprite_info_file(sprite_name))) existing_sprite_info = YAML.load(File.read(sprite_info_file(sprite_name)))
existing_sprite_info[:sprite] != sprite or existing_sprite_info[:timestamps] != timestamps(sprite) existing_sprite_info[:sprite] != sprite or existing_sprite_info[:timestamps] != timestamps(sprite)
@ -114,14 +106,3 @@ module Compass::Sprites
end end
end end
if defined?(ActiveSupport) and Sass::Util.has?(:public_method, ActiveSupport, :on_load)
# Rails 3.0
ActiveSupport.on_load :before_initialize do
Compass::Sprites.extend_sass!
end
else
Compass::Sprites.extend_sass!
end

View File

@ -1,63 +0,0 @@
require 'sass/script/literal'
module Sass::Script
class SpriteInfo < Literal
attr_reader :sprite
attr_reader :sprite_item
attr_reader :type
def initialize(type, sprite, sprite_item = nil, position_x = nil, position_y_shift = nil)
super(nil)
@type = type
@sprite = sprite
@sprite_item = sprite_item
@position_x = position_x
@position_y_shift = position_y_shift
end
def to_s(opts = {})
case @type
when :position
position
when :url
url
when :both
pos = position
if pos == '0 0'
url
else
"#{url} #{pos}"
end
end
end
def to_sass
to_s
end
private
def position
x = @position_x || 0
if @sprite_item[:index] == 0 and (@position_y_shift.nil? or @position_y_shift.value == 0)
"#{x.inspect} 0"
else
expression = "Compass::Sprites.sprites['#{@sprite[:file]}'][:images][#{@sprite_item[:index]}][:y].unary_minus"
expression << ".plus(Sass::Script::Number.new(#{@position_y_shift.value}, ['px']))" if @position_y_shift
"#{x.inspect} <%= #{expression} %>"
end
end
def url
if defined?(Compass)
compass = Class.new.extend(Compass::SassExtensions::Functions::Urls)
compass.image_url(Sass::Script::String.new(@sprite[:file])).to_s
else
"url('/#{@sprite[:file]}')"
end
end
end
end

View File

@ -1,9 +1,9 @@
require File.expand_path(File.dirname(__FILE__) + '/spec_helper') require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
describe Sass::Script::SpriteInfo do describe Compass::SassExtensions::Functions::Sprites::SpriteInfo do
def sprite_info(*args) def sprite_info(*args)
Sass::Script::SpriteInfo.new(*args).to_s Compass::SassExtensions::Functions::Sprites::SpriteInfo.new(*args).to_s
end end
## ##