204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
|
# File 'lib/opal_patches.rb', line 204
def def_single_delegator(accessor, method, ali = method)
accessor_str = accessor.to_s
if accessor_str.start_with?("@") && !accessor_str.include?(".")
define_singleton_method ali do |*args, &block|
instance_variable_get(accessor_str).__send__(method, *args, &block)
end
elsif accessor_str =~ /\A[A-Za-z_]\w*\z/
define_singleton_method ali do |*args, &block|
__send__(accessor_str).__send__(method, *args, &block)
end
else
define_singleton_method ali do |*args, &block|
ForwardableAccessor.resolve(self, accessor_str).__send__(
method,
*args,
&block
)
end
end
end
|