display_class(name)
public
Outputs formatted RI data for class name.
Groups undocumented classes
Show source
def display_class name
return if name =~ /#|\./
klasses = []
includes = []
found = @stores.map do |store|
begin
klass = store.load_class name
klasses << klass
includes << [klass.includes, store] if klass.includes
[store, klass]
rescue Errno::ENOENT
end
end.compact
return if found.empty?
also_in = []
includes.reject! do |modules,| modules.empty? end
out = RDoc::Markup::Document.new
add_class out, name, klasses
add_includes out, includes
found.each do |store, klass|
comment = klass.comment
class_methods = store.class_methods[klass.full_name]
instance_methods = store.instance_methods[klass.full_name]
attributes = store.attributes[klass.full_name]
if comment.empty? and !(instance_methods or class_methods) then
also_in << store
next
end
add_from out, store
unless comment.empty? then
out << RDoc::Markup::Rule.new(1)
out << comment
end
if class_methods or instance_methods or not klass.constants.empty? then
out << RDoc::Markup::Rule.new
end
unless klass.constants.empty? then
out << RDoc::Markup::Heading.new(1, "Constants:")
out << RDoc::Markup::BlankLine.new
list = RDoc::Markup::List.new :NOTE
constants = klass.constants.sort_by { |constant| constant.name }
list.push(*constants.map do |constant|
parts = constant.comment.parts if constant.comment
parts << RDoc::Markup::Paragraph.new('[not documented]') if
parts.empty?
RDoc::Markup::ListItem.new(constant.name, *parts)
end)
out << list
end
add_method_list out, class_methods, 'Class methods'
add_method_list out, instance_methods, 'Instance methods'
add_method_list out, attributes, 'Attributes'
out << RDoc::Markup::BlankLine.new
end
add_also_in out, also_in
display out
end