| Module | IRB::MethodExtender |
| In: |
lib/irb/extend-command.rb
|
# File lib/irb/extend-command.rb, line 236
236: def def_post_proc(base_method, extend_method)
237: base_method = base_method.to_s
238: extend_method = extend_method.to_s
239:
240: alias_name = new_alias_name(base_method)
241: module_eval %[
242: alias_method alias_name, base_method
243: def #{base_method}(*opts)
244: send :#{alias_name}, *opts
245: send :#{extend_method}, *opts
246: end
247: ]
248: end
# File lib/irb/extend-command.rb, line 222
222: def def_pre_proc(base_method, extend_method)
223: base_method = base_method.to_s
224: extend_method = extend_method.to_s
225:
226: alias_name = new_alias_name(base_method)
227: module_eval %[
228: alias_method alias_name, base_method
229: def #{base_method}(*opts)
230: send :#{extend_method}, *opts
231: send :#{alias_name}, *opts
232: end
233: ]
234: end
return #{prefix}#{name}#{postfix}<num>
# File lib/irb/extend-command.rb, line 251
251: def new_alias_name(name, prefix = "__alias_of__", postfix = "__")
252: base_name = "#{prefix}#{name}#{postfix}"
253: all_methods = instance_methods(true) + private_instance_methods(true)
254: same_methods = all_methods.grep(/^#{Regexp.quote(base_name)}[0-9]*$/)
255: return base_name if same_methods.empty?
256: no = same_methods.size
257: while !same_methods.include?(alias_name = base_name + no)
258: no += 1
259: end
260: alias_name
261: end