def method_missing(methId, *args, &block)
meth_name = methId.id2name
meth_def = nil
if args.size > 0
arg = args.first
if arg.instance_of?(EnumeratedAttribute::MethodDefinition)
if arg.has_method_name?
raise_method_syntax_error(meth_name, arg.method_name)
end
meth_def = arg
meth_def.method_name = meth_name
else
meth_def = MethodDefinition.new(meth_name, arg)
end
elsif block_given?
meth_def = MethodDefinition.new(meth_name, block)
else
raise_method_syntax_error(meth_name)
end
evaluate_method_definition(meth_def)
end