def magic_help(query)
if query =~ /\A(.*?)(#|::|\.)([^:#.]+)\Z/
c, k, m = $1, $2, $3
mid = m
begin
c = c.split(/::/).inject(Object){|s,x| s.const_get(x)}
m = case k
when "#"
c.instance_method(m)
when "::"
c.method(m)
when "."
begin
if c.private_instance_methods.include?(m)
c.instance_method(m)
else
c.method(m)
end
rescue NameError
c.instance_method(m)
end
end
ret = help_method_extract(m)
if ret == 'Class#new' and
c.private_method_defined?(:initialize)
return c.name + "::new"
elsif ret =~ /^Kernel#/ and
Kernel.instance_methods(false).include? mid
return "Object##{mid}"
end
ret
rescue Exception
query
end
else
query
end
end