Method: TypeDef::DataConstructor#method_missing

Defined in:
lib/thaip/type_def.rb

#method_missing(name, *args) ⇒ Object



89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/thaip/type_def.rb', line 89

def method_missing(name, *args)
  if name.to_s.end_with?('=')
    key = name.to_s[0..-2].to_sym
    return super(name, *args) unless @vals.key?(key)
    
    type = @argkw[key]
    value = args[0]
    raise "Expected type <#{type}> for value <#{value}>" unless value.nil? || value.is_a?(type)

    @vals[key] = value
  else
    return super(name, *args) unless @vals.key?(name)
  
    @vals[name]
  end
end