9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
# File 'lib/efl/native.rb', line 9
def self.resolve mod, meth, prefix
meth_s = meth.to_s
if meth_s =~/^(.*)=$/
meth_s = $1+'_set'
args_s = '*args[0]'
elsif meth_s =~/^(.*)\?$/
meth_s = $1+'_get'
args_s = '*args'
else
args_s = '*args'
end
sym = (
if Efl::Native.respond_to? prefix+meth_s
prefix+meth_s
elsif Efl::Native.respond_to? meth_s
meth_s
elsif Efl::Native.respond_to? prefix+meth_s+'_get'
prefix+meth_s+'_get'
elsif Efl::Native.respond_to? meth_s+'_get'
meth_s+'_get'
else
raise NameError.new "#{mod.name}.#{meth_s} (#{meth})"
end
)
mod.module_eval "def self.#{meth} *args, █ r=Efl::Native.#{sym}(#{args_s}); yield r if block_given?; r; end"
sym
end
|