module Compass::Configuration::Inheritance::InstanceMethods

Public Instance Methods

any_attributes_set?() click to toggle source
# File lib/compass/configuration/inheritance.rb, line 223
def any_attributes_set?
  @set_attributes && @set_attributes.size > 0
end
chain() click to toggle source
# File lib/compass/configuration/inheritance.rb, line 281
def chain
  instances = [self]
  instances << instances.last.inherited_data while instances.last.inherited_data
  instances
end
debug() click to toggle source
# File lib/compass/configuration/inheritance.rb, line 287
def debug
  normalized_attrs = {}
  (ATTRIBUTES + ARRAY_ATTRIBUTES).each do |prop|
    values = []
    chain.each do |instance|
      values << {
        :raw => (instance.send("raw_#{prop}") rescue nil),
        :value => (instance.send("#{prop}_without_default") rescue nil),
        :default => (instance.send("default_#{prop}") rescue nil),
        :resolved => instance.send(prop)
      }
    end
    normalized_attrs[prop] = values
  end
  normalized_attrs
end
default_for(attribute) click to toggle source
# File lib/compass/configuration/inheritance.rb, line 227
def default_for(attribute)
  method = "default_#{attribute}".to_sym
  if respond_to?(method)
    send(method)
  end
end
inherit_from!(data) click to toggle source
# File lib/compass/configuration/inheritance.rb, line 192
def inherit_from!(data)
  if self.inherited_data
    self.inherited_data.inherit_from!(data)
  else
    self.inherited_data = data
  end
  self
end
method_missing(meth, *args, &block) click to toggle source
# File lib/compass/configuration/inheritance.rb, line 263
def method_missing(meth, *args, &block)
  if inherited_data
    inherited_data.send(meth, *args, &block)
  else
    raise NoMethodError, meth.to_s
  end
end
on_top!() click to toggle source
# File lib/compass/configuration/inheritance.rb, line 180
def on_top!
  self.set_top_level(self)
end
raw(attribute) click to toggle source

Reads the raw value that was set on this object. you generally should call raw_<attribute>() instead.

# File lib/compass/configuration/inheritance.rb, line 249
def raw(attribute)
  instance_variable_get("@#{attribute}")
end
read(attribute) click to toggle source

Read a value that is either inherited or set on this instance, if we get to the bottom-most configuration instance, we ask for the default starting at the top level.

# File lib/compass/configuration/inheritance.rb, line 255
def read(attribute)
  if !(v = send("#{attribute}_without_default")).nil?
    v
  else
    top_level.default_for(attribute)
  end
end
read_without_default(attribute) click to toggle source

Read an explicitly set value that is either inherited or set on this instance

# File lib/compass/configuration/inheritance.rb, line 235
def read_without_default(attribute)
  if set?(attribute)
    send("raw_#{attribute}")
  elsif inherited_data.nil?
    nil
  elsif inherited_data.respond_to?("#{attribute}_without_default")
    inherited_data.send("#{attribute}_without_default")
  elsif inherited_data.respond_to?(attribute)
    inherited_data.send(attribute)
  end
end
reset_inheritance!() click to toggle source
# File lib/compass/configuration/inheritance.rb, line 201
def reset_inheritance!
  self.inherited_data = nil
end
respond_to?(meth) click to toggle source
Calls superclass method
# File lib/compass/configuration/inheritance.rb, line 271
def respond_to?(meth)
  if super
    true
  elsif inherited_data
    inherited_data.respond_to?(meth)
  else
    false
  end
end
set?(attribute) click to toggle source
# File lib/compass/configuration/inheritance.rb, line 218
def set?(attribute)
  @set_attributes ||= {}
  @set_attributes[attribute]
end
set_top_level(new_top) click to toggle source
# File lib/compass/configuration/inheritance.rb, line 184
def set_top_level(new_top)
  self.top_level = new_top
  if self.inherited_data.respond_to?(:set_top_level)
    self.inherited_data.set_top_level(new_top)
  end
end
unset!(attribute) click to toggle source
# File lib/compass/configuration/inheritance.rb, line 211
def unset!(attribute)
  @set_attributes ||= {}
  send("#{attribute}=", nil)
  @set_attributes.delete(attribute)
  nil
end
with_defaults(data) { || ... } click to toggle source
# File lib/compass/configuration/inheritance.rb, line 205
def with_defaults(data)
  inherit_from!(data)
  yield
  reset_inheritance!
end