5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# File 'lib/multidispatch_dsl/dsl.rb', line 5
def mdef(method_name, *declaration, &block)
real_method_name = ::MultidispatchDSL::Generator.method_name_from_declaration(method_name, declaration)
define_method(real_method_name, &block)
unless method_defined?(method_name)
class_eval " def \#{ method_name }(*args, &block)\n real_method_name = ::MultidispatchDSL::Generator.method_name_from_args(__callee__, args)\n if respond_to?(real_method_name)\n send(real_method_name, *args, &block)\n else\n fallback_method_name = \"\#{ method_name }_anything\"\n if respond_to?(fallback_method_name)\n send(fallback_method_name, *args, &block)\n else\n raise ::MultidispatchDSL::MissingDeclarationError.new(__callee__, args)\n end\n end\n end\n RUBY\n end\nend\n", __FILE__, __LINE__ + 1
|