class ExStruct
Public Class Methods
new(hash=nil)
click to toggle source
# File lib/ex_struct.rb, line 3 def initialize(hash=nil) @table = {} regist(hash) if hash end
Public Instance Methods
method_missing(mid, *args)
click to toggle source
# File lib/ex_struct.rb, line 16 def method_missing(mid, *args) mname = mid.id2name len = args.length if mname.chomp!('=') if len != 1 raise ArgumentError, "wrong number of arguments (#{len} for 1)", caller(1) end modifiable[new_ostruct_member(mname)] = args[0] elsif mname.chomp!('?') if len != 0 raise ArgumentError, "wrong number of arguments (#{len} for 0)", caller(1) end @table[mname.to_sym] elsif len == 0 ret = @table[mid] ret = (modifiable[new_ostruct_member(mname)] = self.class.new) unless ret ret else raise ArgumentError, "wrong number of arguments (#{len} for 0)", caller(1) end end
Private Instance Methods
regist(hash)
click to toggle source
# File lib/ex_struct.rb, line 8 def regist(hash) for k,v in hash @table[k.to_sym] = Hash === v ? ExStruct.new(v) : v new_ostruct_member(k) end end