def info(keyw, options = {})
options = DEFAULT_INFO_OPTIONS.merge(options)
return nil if keyw.strip.empty?
descriptor = NameDescriptor.new(keyw)
entries = obtain_entries(descriptor, options)
case entries.size
when 0; nil
when 1
case entries[0].type
when :namespace
capture_stdout(display(options)) do |display|
display.display_class_info(@ri_reader.get_class(entries[0]), @ri_reader)
if options[:extended]
methods = @ri_reader.methods_under(entries[0], true)
methods.each do |meth_entry|
display.display_method_info(@ri_reader.get_method(meth_entry))
end
end
end
when :method
capture_stdout(display(options)) do |display|
display.display_method_info(@ri_reader.get_method(entries[0]))
end
end
else
capture_stdout(display(options)) do |display|
formatter = display.formatter
formatter.draw_line("Multiple choices:")
formatter.blankline
formatter.wrap(entries.map{|x| x.full_name}.join(", "))
entries.each do |entry|
display.display_method_info(@ri_reader.get_method(entry)) if entry.type == :method
end if options[:expand_choices]
end
end
rescue RiError
return nil
end