class SimpleStruct
Public Class Methods
create(obj)
click to toggle source
# File lib/simple_struct.rb, line 35 def create obj obj.is_a?(Hash) ? SimpleStruct.new(obj) : obj end
new(hash)
click to toggle source
# File lib/simple_struct.rb, line 5 def initialize hash @origin_hash = hash @a = hash.inject({}){ |res, (key, value)| res[key] = SimpleStruct.create(value); res } end
Public Instance Methods
[](key)
click to toggle source
# File lib/simple_struct.rb, line 10 def [](key) @a[real_key(key)] end
[]=(key, value)
click to toggle source
# File lib/simple_struct.rb, line 14 def []=(key, value) @a[real_key(key)] = value end
method_missing(method_name, *args)
click to toggle source
Calls superclass method
# File lib/simple_struct.rb, line 22 def method_missing method_name, *args return self[method_name.to_s.delete("=")] = args.first if method_name[-1] == "=" return self[method_name] if @a.has_key?(real_key(method_name)) super method_name, *args end
to_hash()
click to toggle source
# File lib/simple_struct.rb, line 18 def to_hash @origin_hash end
Private Instance Methods
real_key(key)
click to toggle source
# File lib/simple_struct.rb, line 29 def real_key key @a.keys.find { |k| k.to_s == key.to_s} || key end