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