class Asetus::ConfigStruct

Public Class Methods

new(hash=nil, opts={}) click to toggle source
# File lib/asetus/configstruct.rb, line 34
def initialize hash=nil, opts={}
  @key_to_s = opts.delete :key_to_s
  @cfg = hash ? _asetus_from_hash(hash) : {}
end

Public Instance Methods

_asetus_to_hash() click to toggle source
# File lib/asetus/configstruct.rb, line 4
def _asetus_to_hash
  hash = {}
  @cfg.each do |key, value|
    if value.class == ConfigStruct
      value = value._asetus_to_hash
    end
    key = key.to_s if @key_to_s
    hash[key] = value
  end
  hash
end
each(&block) click to toggle source
# File lib/asetus/configstruct.rb, line 20
def each &block
  @cfg.each(&block)
end
empty?() click to toggle source
# File lib/asetus/configstruct.rb, line 16
def empty?
  @cfg.empty?
end
has_key?(key) click to toggle source
# File lib/asetus/configstruct.rb, line 28
def has_key? key
  @cfg.has_key? key
end
keys() click to toggle source
# File lib/asetus/configstruct.rb, line 24
def keys
  @cfg.keys
end

Private Instance Methods

_asetus_from_hash(hash) click to toggle source
# File lib/asetus/configstruct.rb, line 68
def _asetus_from_hash hash
  cfg = {}
  hash.each do |key, value|
    if value.class == Hash
      value = ConfigStruct.new value, :key_to_s=>@key_to_s
    end
    cfg[key] = value
  end
  cfg
end
_asetus_get(key, value) click to toggle source
# File lib/asetus/configstruct.rb, line 60
def _asetus_get key, value
  if @cfg.has_key? key
    @cfg[key]
  else
    @cfg[key] = ConfigStruct.new
  end
end
_asetus_set(key, value) click to toggle source
# File lib/asetus/configstruct.rb, line 56
def _asetus_set key, value
  @cfg[key] = value
end
method_missing(name, *args, &block) click to toggle source
# File lib/asetus/configstruct.rb, line 39
def method_missing name, *args, &block
  name = name.to_s
  name = args.shift if name[0..1] == '[]' # asetus.cfg['foo']
  arg = args.first
  if    name[-1..-1] == '?'               # asetus.cfg.foo.bar?
    if @cfg.has_key? name[0..-2]
      @cfg[name[0..-2]]
    else
      nil
    end
  elsif name[-1..-1] == '='               # asetus.cfg.foo.bar = 'quux'
    _asetus_set name[0..-2], arg
  else
    _asetus_get name, arg                 # asetus.cfg.foo.bar
  end
end