Class: Compass::Configuration::Data
- Inherits:
-
Object
- Object
- Compass::Configuration::Data
- Extended by:
- Paths, Sass::Callbacks
- Includes:
- Adapters, Inheritance, Serialization
- Defined in:
- lib/compass/configuration/data.rb
Overview
The Compass configuration data storage class manages configuration data that comes from a variety of different sources and aggregates them together into a consistent API Some of the possible sources of configuration data:
* Compass default project structure for stand alone projects
* App framework specific project structures for rails, etc.
* User supplied explicit configuration
* Configuration data provided via the command line interface
There are two kinds of configuration data that doesn’t come from the user:
-
Configuration data that is defaulted as if the user had provided it themselves. This is useful for providing defaults that the user is likely to want to edit but shouldn’t have to provide explicitly when getting started
-
Configuration data that is defaulted behind the scenes because some value is required.
Direct Known Subclasses
Constant Summary
Constants included from Paths
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Instance Method Summary collapse
- #add_import_path(*paths) ⇒ Object
-
#asset_cache_buster(simple = nil, &block) ⇒ Object
When called with a block, defines the cache buster strategy to be used.
-
#asset_host(&block) ⇒ Object
When called with a block, defines the asset host url to be used.
-
#discover(frameworks_dir) ⇒ Object
Finds all extensions within a directory and registers them.
-
#initialize(name, attr_hash = nil) ⇒ Data
constructor
A new instance of Data.
- #load(framework_dir) ⇒ Object
- #relative_assets? ⇒ Boolean
-
#require(lib) ⇒ Object
Require a compass plugin and capture that it occured so that the configuration serialization works next time.
- #set_all(attr_hash) ⇒ Object
- #watch(glob, &block) ⇒ Object
- #watches ⇒ Object
Methods included from Paths
Methods included from Adapters
#absolute_path?, #resolve_additional_import_paths, #sass_load_paths, #to_compiler_arguments, #to_sass_engine_options, #to_sass_plugin_options
Methods included from Serialization
#_parse, #get_binding, #issue_deprecation_warnings, #parse, #parse_string, #serialize, #serialize_property
Methods included from Inheritance
Constructor Details
#initialize(name, attr_hash = nil) ⇒ Data
Returns a new instance of Data.
65 66 67 68 69 70 |
# File 'lib/compass/configuration/data.rb', line 65 def initialize(name, attr_hash = nil) raise "I need a name!" unless name @name = name set_all(attr_hash) if attr_hash self.top_level = self end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
20 21 22 |
# File 'lib/compass/configuration/data.rb', line 20 def name @name end |
Instance Method Details
#add_import_path(*paths) ⇒ Object
81 82 83 84 85 86 87 88 89 |
# File 'lib/compass/configuration/data.rb', line 81 def add_import_path(*paths) paths.map!{|p| defined?(Pathname) && Pathname === p ? p.to_s : p} # The @added_import_paths variable works around an issue where # the additional_import_paths gets overwritten during parse @added_import_paths ||= [] @added_import_paths += paths self.additional_import_paths ||= [] self.additional_import_paths += paths end |
#asset_cache_buster(simple = nil, &block) ⇒ Object
When called with a block, defines the cache buster strategy to be used. If the block returns nil or a string, then it is appended to the url as a query parameter. In this case, the returned string must not include the starting ‘?’. The block may also return a hash with :path and/or :query values and it will replace the original path and query string with the busted values returned. The block will be passed the root-relative url of the asset. If the block accepts two arguments, it will also be passed a File object that points to the asset on disk – which may or may not exist. When called without a block, returns the block that was previously set.
To disable the asset cache buster:
asset_cache_buster :none
122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
# File 'lib/compass/configuration/data.rb', line 122 def asset_cache_buster(simple = nil, &block) @set_attributes ||= {} if block_given? @set_attributes[:asset_cache_buster] = true @asset_cache_buster = block elsif !simple.nil? if simple == :none @set_attributes[:asset_cache_buster] = true @asset_cache_buster = Proc.new {|_,_| nil} else raise ArgumentError, "Unexpected argument: #{simple.inspect}" end else if set?(:asset_cache_buster) @asset_cache_buster elsif inherited_data.respond_to?(:asset_cache_buster) inherited_data.asset_cache_buster end end end |
#asset_host(&block) ⇒ Object
When called with a block, defines the asset host url to be used. The block must return a string that starts with a protocol (E.g. http). The block will be passed the root-relative url of the asset. When called without a block, returns the block that was previously set.
95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/compass/configuration/data.rb', line 95 def asset_host(&block) @set_attributes ||= {} if block_given? @set_attributes[:asset_host] = true @asset_host = block else if @asset_host @asset_host elsif inherited_data.respond_to?(:asset_host) inherited_data.asset_host end end end |
#discover(frameworks_dir) ⇒ Object
Finds all extensions within a directory and registers them.
170 171 172 173 |
# File 'lib/compass/configuration/data.rb', line 170 def discover(frameworks_dir) (self.framework_path ||= []) << frameworks_dir Compass::Frameworks.discover frameworks_dir end |
#load(framework_dir) ⇒ Object
164 165 166 167 |
# File 'lib/compass/configuration/data.rb', line 164 def load(framework_dir) (self.loaded_frameworks ||= []) << framework_dir Compass::Frameworks.register_directory framework_dir end |
#relative_assets? ⇒ Boolean
175 176 177 178 |
# File 'lib/compass/configuration/data.rb', line 175 def relative_assets? # the http_images_path is deprecated, but here for backwards compatibility. relative_assets || http_images_path == :relative end |
#require(lib) ⇒ Object
Require a compass plugin and capture that it occured so that the configuration serialization works next time.
159 160 161 162 |
# File 'lib/compass/configuration/data.rb', line 159 def require(lib) (self.required_libraries ||= []) << lib super end |
#set_all(attr_hash) ⇒ Object
72 73 74 75 76 77 78 79 |
# File 'lib/compass/configuration/data.rb', line 72 def set_all(attr_hash) # assert_valid_keys!(attr_hash) attr_hash.each do |a, v| if self.respond_to?("#{a}=") self.send("#{a}=", v) end end end |
#watch(glob, &block) ⇒ Object
143 144 145 146 |
# File 'lib/compass/configuration/data.rb', line 143 def watch(glob, &block) @watches ||= [] @watches << [glob, block] end |
#watches ⇒ Object
148 149 150 151 152 153 154 155 156 |
# File 'lib/compass/configuration/data.rb', line 148 def watches if defined?(@watches) @watches elsif inherited_data.respond_to?(:watches) inherited_data.watches else [] end end |