class RecursiveStruct

Constants

VERSION

Public Class Methods

new(hash = nil) click to toggle source
# File lib/recursive_struct.rb, line 6
def initialize(hash = nil)
  hash.each { |key, value| set_data(key, value) } if hash
end

Public Instance Methods

method_missing(name, *args, &block) click to toggle source
Calls superclass method
# File lib/recursive_struct.rb, line 10
def method_missing(name, *args, &block)
  key = name.to_s

  if key.include?('=')
    add_setter(key.chomp('='), *args)
  elsif data.respond_to?(key)
    send_data(key, *args, &block)
  elsif args.length == 0
    get_data(key)
  else
    super(name, *args, &block)
  end
end

Private Instance Methods

add_setter(key, *args) click to toggle source
# File lib/recursive_struct.rb, line 26
def add_setter(key, *args)
  if key == '[]' && args.length == 2
    set_data(args.first, args.last)
  elsif args.length == 1
    set_data(key, args.first)
  end
end