class RKit::Core::Configurer

Attributes

_aliases[RW]
_base[RW]
_config[RW]
_presets[RW]

Public Class Methods

new(base, config = {}) click to toggle source
# File lib/r_kit/core/configurer.rb, line 4
def initialize base, config = {}
  @_base = base
  @_config = config
  @_presets = Hash.new{ |hash, key| hash[key] = self.class.new(_base) }
  @_aliases = []
end

Public Instance Methods

alias(*name, old_name) click to toggle source
# File lib/r_kit/core/configurer.rb, line 34
def alias *name, old_name
  new_name = name.pop
  config = name.reduce(_config){ |config, nested| config = config[nested] }

  config[new_name] = config[old_name] if config[new_name].blank?
end
alias_config(*name, old_name) click to toggle source
# File lib/r_kit/core/configurer.rb, line 30
def alias_config *name, old_name
  _aliases << [name, old_name]
end
config(*name, default) click to toggle source
# File lib/r_kit/core/configurer.rb, line 21
def config *name, default
  _config.deep_merge! [*name, default].reverse.reduce{ |nested, key| Hash[key, nested] }
end
fingerprint() click to toggle source
# File lib/r_kit/core/configurer.rb, line 66
def fingerprint
  _config.sort.join
end
inspect() click to toggle source
# File lib/r_kit/core/configurer.rb, line 62
def inspect
  _config.inspect
end
load!(config) click to toggle source
# File lib/r_kit/core/configurer.rb, line 54
def load! config
  load_preset! config.delete(:preset)
  load_config! config
  load_alias!
  load_public_accessor!
end
load_alias!() click to toggle source
# File lib/r_kit/core/configurer.rb, line 41
def load_alias!
  _aliases.each do |(name, old_name)|
    self.alias *name, old_name
  end
end
load_config!(config_options) click to toggle source
# File lib/r_kit/core/configurer.rb, line 25
def load_config! config_options
  _config.deep_merge! config_options
end
load_preset!(name) click to toggle source
# File lib/r_kit/core/configurer.rb, line 16
def load_preset! name
  _config.deep_merge! _presets[name]._config
end
load_public_accessor!() click to toggle source
# File lib/r_kit/core/configurer.rb, line 48
def load_public_accessor!
  _base.const_set :CONFIG, OpenStruct.new(_config)
  _base.define_singleton_method('config'){ self::CONFIG }
end
preset(name, config) click to toggle source
# File lib/r_kit/core/configurer.rb, line 12
def preset name, config
  _presets[name] = self.class.new(_base, config)
end