Parent

Configatron::Store

Public Class Methods

new(root_store, name='configatron', attributes={}) click to toggle source
# File lib/configatron/store.rb, line 7
def initialize(root_store, name='configatron', attributes={})
  @root_store = root_store
  @name = name
  @attributes = attributes
end

Public Instance Methods

[](key) click to toggle source
# File lib/configatron/store.rb, line 13
def [](key)
  val = fetch(key.to_sym) do
    if @root_store.locked?
      ::Kernel.raise ::Configatron::UndefinedKeyError.new("Key not found: #{key} (for locked #{self})")
    end
    ::Configatron::Store.new(@root_store, "#{@name}.#{key}")
  end
  return val
end
clone() click to toggle source

Needed for deep_clone to actually clone this object

# File lib/configatron/store.rb, line 91
def clone
  Store.new(@root_store, @name, @attributes.clone)
end
configure_from_hash(hash) click to toggle source
# File lib/configatron/store.rb, line 50
def configure_from_hash(hash)
  hash.each do |key, value|
    if ::Hash === value
      self[key].configure_from_hash(value)
    else
      store(key, value)
    end
  end
end
fetch(key, default_value = nil, &block) click to toggle source
# File lib/configatron/store.rb, line 30
def fetch(key, default_value = nil, &block)
  val = @attributes[key.to_sym]
  if val == nil
    if block
      val = block.call
    elsif default_value
      val = default_value
    end
    store(key, val)
  end
  if ::Configatron::Proc === val
    val = val.call
  end
  return val
end
inspect() click to toggle source
# File lib/configatron/store.rb, line 64
def inspect
  f_out = []
  @attributes.each do |k, v|
    if ::Configatron::Store === v
      v.inspect.each_line do |line|
        if line.match(/\n/)
          line.each_line do |l|
            l.strip!
            f_out << l
          end
        else
          line.strip!
          f_out << line
        end
      end
    else
      f_out << "#{@name}.#{k} = #{v.inspect}"
    end
  end
  f_out.compact.sort.join("\n")
end
key?(key) click to toggle source
# File lib/configatron/store.rb, line 46
def key?(key)
  @attributes.key?(key.to_sym)
end
Also aliased as: has_key?
method_missing(name, *args, &block) click to toggle source
# File lib/configatron/store.rb, line 86
def method_missing(name, *args, &block)
  do_lookup(name, *args, &block)
end
nil?() click to toggle source

So that we keep backward-compatibility in case people are using nil? to check configatron settings:

# File lib/configatron/store.rb, line 109
def nil?
  false
end
store(key, value) click to toggle source
# File lib/configatron/store.rb, line 23
def store(key, value)
  if @root_store.locked?
    ::Kernel.raise ::Configatron::LockedError.new("Cannot set key #{key} for locked #{self}")
  end
  @attributes[key.to_sym] = value
end
Also aliased as: []=
to_ary() click to toggle source

So that puts works (it expects the object to respond to to_ary)

# File lib/configatron/store.rb, line 103
def to_ary
  nil
end
to_h() click to toggle source
# File lib/configatron/store.rb, line 95
def to_h
  @attributes.each_with_object({}) do |(k, v), h|
    v = v.call if ::Configatron::Proc === v
    h[k] = Store === v ? v.to_h : v
  end
end
Also aliased as: to_hash
to_s() click to toggle source
# File lib/configatron/store.rb, line 60
def to_s
  @name
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.