Module: Confo::SubconfigsManager::ClassMethods

Defined in:
lib/confo/concerns/subconfigs_manager.rb

Instance Method Summary collapse

Instance Method Details

#define_subconfig_reader(subconfig_name, subconfig_options) ⇒ Object



37
38
39
40
41
# File 'lib/confo/concerns/subconfigs_manager.rb', line 37

def define_subconfig_reader(subconfig_name, subconfig_options)
  define_method(subconfig_name) do |options = nil, overrides = nil, &block|
    subconfig_internal(subconfig_name, options, overrides, &block)
  end
end

#includes_config(arg, options = {}) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/confo/concerns/subconfigs_manager.rb', line 6

def includes_config(arg, options = {})
  @subconfigs_options ||= {}

  # Support different syntaxes:
  #   includes_config :actions
  #   includes_config of: :actions
  #   includes_config for: :actions
  name          = (arg.kind_of?(Hash) ? arg[:of] || arg[:for] : arg).to_sym
  new_options   = @subconfigs_options[name]
  new_options ||= { name: name, fallback_class_name: 'Confo::Config' }
  new_options.merge!(options)

  @subconfigs_options[name] = new_options

  define_subconfig_reader(name, new_options)
  self
end

#subconfigs_optionsObject



24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/confo/concerns/subconfigs_manager.rb', line 24

def subconfigs_options
  all_options = @subconfigs_options ? @subconfigs_options.dup : {}
  if superclass.respond_to?(:subconfigs_options)
    superclass.subconfigs_options.each do |name, options|
      new_options = {}
      new_options.merge!(options[name]) if options[name]
      new_options.merge!(options)
      options[name] = new_options
    end
  end
  all_options
end