module Confo::SubconfigsManager::ClassMethods

Public Instance Methods

define_subconfig_reader(subconfig_name, subconfig_options) click to toggle source
# 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 = {}) click to toggle source
# 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_options() click to toggle source
# 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