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