class MagicLamp::DefaultsManager

Attributes

configuration[RW]
defaults[RW]
parent[RW]

Public Class Methods

new(configuration, defaults, parent = nil) click to toggle source
# File lib/magic_lamp/defaults_manager.rb, line 7
def initialize(configuration, defaults, parent = nil)
  self.configuration = configuration
  self.defaults = defaults
  self.parent = parent
end

Public Instance Methods

all_defaults(settings) click to toggle source
# File lib/magic_lamp/defaults_manager.rb, line 22
def all_defaults(settings)
  [configuration.global_defaults, *branch.map(&:defaults), settings]
end
branch(defaults_managers = [self]) click to toggle source
# File lib/magic_lamp/defaults_manager.rb, line 13
def branch(defaults_managers = [self])
  ancestor = defaults_managers.first.parent
  if ancestor.nil?
    defaults_managers
  else
    branch([ancestor, *defaults_managers])
  end
end
define(new_defaults = {}, &block) click to toggle source
# File lib/magic_lamp/defaults_manager.rb, line 36
def define(new_defaults = {}, &block)
  raise ArgumentError, "`#{__method__}` requires a block" if block.nil?
  new_manager = self.class.new(configuration, new_defaults, self)
  new_manager.instance_eval(&block)
  new_manager
end
merge_with_defaults(settings) click to toggle source
# File lib/magic_lamp/defaults_manager.rb, line 26
def merge_with_defaults(settings)
  all_defaults(settings).each_with_object({}) do |defaults_hash, merged_defaults_hash|
    merged_namespaces = merge_namespaces(merged_defaults_hash, defaults_hash)
    all_extensions = combine_extensions(merged_defaults_hash, defaults_hash)
    merged_defaults_hash.merge!(defaults_hash)
    merged_defaults_hash[:namespace] = merged_namespaces if merged_namespaces.present?
    merged_defaults_hash[:extend] = all_extensions
  end
end
register_fixture(options = {}, &block) click to toggle source
# File lib/magic_lamp/defaults_manager.rb, line 43
def register_fixture(options = {}, &block)
  merged_options = merge_with_defaults(options)
  MagicLamp.register_fixture(merged_options, &block)
end

Private Instance Methods

combine_extensions(merged_defaults_hash, defaults_hash) click to toggle source
# File lib/magic_lamp/defaults_manager.rb, line 59
def combine_extensions(merged_defaults_hash, defaults_hash)
  all_extensions = Array(merged_defaults_hash[:extend]) + Array(defaults_hash[:extend])
  all_extensions.reverse.uniq.reverse
end
merge_namespaces(merged_defaults_hash, defaults_hash) click to toggle source
# File lib/magic_lamp/defaults_manager.rb, line 54
def merge_namespaces(merged_defaults_hash, defaults_hash)
  defaults_namespace = defaults_hash[:namespace] || defaults_hash[:controller].try(:controller_name)
  [merged_defaults_hash[:namespace], defaults_namespace].select(&:present?).join(FORWARD_SLASH)
end