[Extensions] When installing a file, the :like option can now be set to have it installed into the same location as what it is like.

This commit is contained in:
Chris Eppstein 2009-07-03 21:57:04 -07:00
parent 6555ab3952
commit 21cfce33db

View File

@ -31,7 +31,7 @@ module Compass
# Initializes the project to work with compass
def init
dirs = manifest.map do |entry|
File.dirname(send("install_location_for_#{entry.type}", entry.to))
File.dirname(send("install_location_for_#{entry.type}", entry.to, entry.options))
end
if manifest.has_stylesheet?
@ -90,9 +90,16 @@ module Compass
def self.installer(type, &locator)
locator ||= lambda{|to| to}
loc_method = "install_location_for_#{type}".to_sym
define_method loc_method, locator
define_method("simple_#{loc_method}", locator)
define_method(loc_method) do |to, options|
if options[:like] && options[:like] != type
send("install_location_for_#{options[:like]}", to, options)
else
send("simple_#{loc_method}", to)
end
end
define_method "install_#{type}" do |from, to, options|
copy templatize(from), targetize(send(loc_method, to))
copy templatize(from), targetize(send(loc_method, to, options))
end
end
@ -100,6 +107,10 @@ module Compass
"#{sass_dir}/#{pattern_name_as_dir}#{to}"
end
installer :css do |to|
"#{css_dir}/#{to}"
end
installer :image do |to|
"#{images_dir}/#{to}"
end