Class: MagicLamp::DefaultsManager

Inherits:
Object
  • Object
show all
Defined in:
lib/magic_lamp/defaults_manager.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(configuration, defaults, parent = nil) ⇒ DefaultsManager

Returns a new instance of DefaultsManager.



7
8
9
10
11
# 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

Instance Attribute Details

#configurationObject

Returns the value of attribute configuration.



5
6
7
# File 'lib/magic_lamp/defaults_manager.rb', line 5

def configuration
  @configuration
end

#defaultsObject

Returns the value of attribute defaults.



5
6
7
# File 'lib/magic_lamp/defaults_manager.rb', line 5

def defaults
  @defaults
end

#parentObject

Returns the value of attribute parent.



5
6
7
# File 'lib/magic_lamp/defaults_manager.rb', line 5

def parent
  @parent
end

Instance Method Details

#all_defaults(settings) ⇒ Object



22
23
24
# 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]) ⇒ Object



13
14
15
16
17
18
19
20
# 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) ⇒ Object

Raises:



36
37
38
39
40
41
# 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) ⇒ Object



26
27
28
29
30
31
32
33
34
# 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) ⇒ Object



43
44
45
46
# 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