87 lines
2.6 KiB
Ruby
87 lines
2.6 KiB
Ruby
module Compass
|
|
module Configuration
|
|
|
|
def self.attributes_for_directory(dir_name, http_dir_name = dir_name)
|
|
[
|
|
"#{dir_name}_dir",
|
|
"#{dir_name}_path",
|
|
("http_#{http_dir_name}_dir" if http_dir_name),
|
|
("http_#{http_dir_name}_path" if http_dir_name)
|
|
].compact.map{|a| a.to_sym}
|
|
end
|
|
|
|
ATTRIBUTES = [
|
|
# What kind of project?
|
|
:project_type,
|
|
# Where is the project?
|
|
:project_path,
|
|
:http_path,
|
|
# Where are the various bits of the project
|
|
attributes_for_directory(:css, :stylesheets),
|
|
attributes_for_directory(:sass, nil),
|
|
attributes_for_directory(:images),
|
|
attributes_for_directory(:generated_images),
|
|
attributes_for_directory(:javascripts),
|
|
attributes_for_directory(:fonts),
|
|
attributes_for_directory(:extensions, nil),
|
|
# Compilation options
|
|
:sprite_load_path,
|
|
:output_style,
|
|
:environment,
|
|
:relative_assets,
|
|
:additional_import_paths,
|
|
:sass_options,
|
|
attributes_for_directory(:cache, nil),
|
|
:cache,
|
|
# Helper configuration
|
|
:asset_host,
|
|
:asset_cache_buster,
|
|
:line_comments,
|
|
:color_output,
|
|
:preferred_syntax,
|
|
:disable_warnings,
|
|
:sprite_engine,
|
|
:chunky_png_options
|
|
].flatten
|
|
|
|
# Registers a new configuration property.
|
|
# Extensions can use this to add new configuration options to compass.
|
|
#
|
|
# @param [Symbol] name The name of the property.
|
|
# @param [String] comment A comment for the property.
|
|
# @param [Proc] default A method to calculate the default value for the property.
|
|
# The proc is executed in the context of the project's configuration data.
|
|
def self.add_configuration_property(name, comment = nil, &default)
|
|
ATTRIBUTES << name
|
|
if comment.is_a?(String)
|
|
unless comment[0..0] == "#"
|
|
comment = "# #{comment}"
|
|
end
|
|
unless comment[-1..-1] == "\n"
|
|
comment = comment + "\n"
|
|
end
|
|
Data.class_eval <<-COMMENT
|
|
def comment_for_#{name}
|
|
#{comment.inspect}
|
|
end
|
|
COMMENT
|
|
end
|
|
Data.send(:define_method, :"default_#{name}", &default) if default
|
|
Data.inherited_accessor(name)
|
|
if name.to_s =~ /dir|path/
|
|
strip_trailing_separator(name)
|
|
end
|
|
end
|
|
|
|
# For testing purposes
|
|
def self.remove_configuration_property(name)
|
|
ATTRIBUTES.delete(name)
|
|
end
|
|
|
|
end
|
|
end
|
|
|
|
['adapters', 'comments', 'defaults', 'helpers', 'inheritance', 'serialization', 'paths', 'data', 'file_data'].each do |lib|
|
|
require "compass/configuration/#{lib}"
|
|
end
|