class Ecogem::Util::Config::ValueContainer

Public Class Methods

new(base, config, default_data) click to toggle source
# File lib/ecogem/util/config/value_container.rb, line 5
def initialize(base, config, default_data)
  @base = base
  @config = config
  @default_data = default_data
end

Public Instance Methods

find_value(key) click to toggle source
# File lib/ecogem/util/config/value_container.rb, line 58
def find_value(key)
  return values[key] if values.key?(key)
  return @base.find_value(key) if @base
  raise NotFoundError
end
h_to_values(h) click to toggle source
# File lib/ecogem/util/config/value_container.rb, line 19
def h_to_values(h)
  values = {}
  h.each do |k, v|
    k = k.to_sym
    entry = @config.class.entries[k]
    values[k] = entry.parse(v) if entry
  end
  values
end
proxy() click to toggle source
# File lib/ecogem/util/config/value_container.rb, line 11
def proxy
  @proxy ||= Proxy.new(self)
end
resolve_method(name, *args, &block) click to toggle source
# File lib/ecogem/util/config/value_container.rb, line 38
def resolve_method(name, *args, &block)
  key = name.to_s.sub(/(=)$/, '').to_sym
  assign = $1
  entry = @config.class.entries[key]
  if entry
    if assign
      return values[key] = args.first
    else
      begin
        return find_value(key)
      rescue NotFoundError
        value = entry.parse(nil)
        values[key] = value
        return value
      end
    end
  end
  raise UnresolvedError
end
values() click to toggle source
# File lib/ecogem/util/config/value_container.rb, line 15
def values
  @values ||= h_to_values(@default_data || {})
end
values_to_h() click to toggle source
# File lib/ecogem/util/config/value_container.rb, line 29
def values_to_h
  h = {}
  values.each do |k, v|
    entry = @config.class.entries[k]
    h[k.to_s] = entry.unparse(v)
  end
  h
end