Class: Compass::Configuration::Data

Inherits:
Object
  • Object
show all
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:

  1. 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

  2. Configuration data that is defaulted behind the scenes because some value is required.

Direct Known Subclasses

FileData

Constant Summary

Constants included from Paths

Paths::TRAILING_SEPARATOR

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Paths

strip_trailing_separator

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

included

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

#nameObject (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

Returns:

  • (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

#watchesObject



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