class Ansr::NestedOpenStructWithHashAccess

Attributes

nested_class[R]

Public Class Methods

new(klass, *args) click to toggle source
Calls superclass method
# File lib/ansr/utils.rb, line 31
def initialize klass, *args
  @nested_class = klass
  hash = {}

  hashes_and_keys = args.flatten
  lazy_configs = hashes_and_keys.extract_options!

  args.each do |v|
    if v.is_a? Hash
      key = v.first
      value = v[key]

      hash[key] = nested_class.new value
    else
      hash[v] = nested_class.new
    end
  end

  lazy_configs.each do |k,v|
    hash[k] = nested_class.new v
  end

  super hash
  set_default_proc!
end

Public Instance Methods

<<(key) click to toggle source
# File lib/ansr/utils.rb, line 57
def << key
  @table[key]
end
[]=(key, value) click to toggle source
# File lib/ansr/utils.rb, line 61
def []=(key, value)
  if value.is_a? Hash
    send "#{key}=", nested_class.new(value)
  else
    send "#{key}=", value
  end
end
marshal_dump() click to toggle source
# File lib/ansr/utils.rb, line 69
def marshal_dump
  h = to_h.dup
  h.default = nil

  [nested_class, h]
end
marshal_load(x) click to toggle source
Calls superclass method
# File lib/ansr/utils.rb, line 76
def marshal_load x
  @nested_class = x.first
  super x.last
  set_default_proc!
end

Private Instance Methods

set_default_proc!() click to toggle source
# File lib/ansr/utils.rb, line 83
def set_default_proc!
  self.default_proc = lambda do |hash, key|
    hash[key] = self.nested_class.new
  end
end