Class | RDoc::RI::DefaultDisplay |
In: |
ri/display.rb
|
Parent: | Object |
A paging display module. Uses the RDoc::RI::Formatter class to do the actual presentation.
# File ri/display.rb, line 35 35: def initialize(formatter, width, use_stdout) 36: @use_stdout = use_stdout 37: @formatter = formatter.new $stdout, width, " " 38: end
# File ri/display.rb, line 56 56: def display_class_info(klass, ri_reader) 57: page do 58: superclass = klass.superclass_string 59: 60: if superclass 61: superclass = " < " + superclass 62: else 63: superclass = "" 64: end 65: 66: @formatter.draw_line(klass.display_name + ": " + 67: klass.full_name + superclass) 68: 69: display_flow(klass.comment) 70: @formatter.draw_line 71: 72: unless klass.includes.empty? 73: @formatter.blankline 74: @formatter.display_heading("Includes:", 2, "") 75: incs = [] 76: klass.includes.each do |inc| 77: inc_desc = ri_reader.find_class_by_name(inc.name) 78: if inc_desc 79: str = inc.name + "(" 80: str << inc_desc.instance_methods.map{|m| m.name}.join(", ") 81: str << ")" 82: incs << str 83: else 84: incs << inc.name 85: end 86: end 87: @formatter.wrap(incs.sort.join(', ')) 88: end 89: 90: unless klass.constants.empty? 91: @formatter.blankline 92: @formatter.display_heading("Constants:", 2, "") 93: len = 0 94: klass.constants.each { |c| len = c.name.length if c.name.length > len } 95: len += 2 96: klass.constants.each do |c| 97: @formatter.wrap(c.value, 98: @formatter.indent+((c.name+":").ljust(len))) 99: end 100: end 101: 102: unless klass.class_methods.empty? 103: @formatter.blankline 104: @formatter.display_heading("Class methods:", 2, "") 105: @formatter.wrap(klass.class_methods.map{|m| m.name}.sort.join(', ')) 106: end 107: 108: unless klass.class_method_extensions.empty? 109: @formatter.blankline 110: @formatter.display_heading("Class Method Extensions:", 2, "") 111: @formatter.wrap(klass.class_method_extensions.map{|m| m.name}.sort.join(', ')) 112: end 113: 114: unless klass.instance_methods.empty? 115: @formatter.blankline 116: @formatter.display_heading("Instance methods:", 2, "") 117: @formatter.wrap(klass.instance_methods.map{|m| m.name}.sort.join(', ')) 118: end 119: 120: unless klass.instance_method_extensions.empty? 121: @formatter.blankline 122: @formatter.display_heading("Instance Method Extensions:", 2, "") 123: @formatter.wrap(klass.instance_method_extensions.map{|m| m.name}.sort.join(', ')) 124: end 125: 126: unless klass.attributes.empty? 127: @formatter.blankline 128: @formatter.wrap("Attributes:", "") 129: @formatter.wrap(klass.attributes.map{|a| a.name}.sort.join(', ')) 130: end 131: end 132: end
# File ri/display.rb, line 145 145: def display_class_list(namespaces) 146: page do 147: @formatter.raw_print_line("More than one class or module matched your request. You can refine") 148: @formatter.raw_print_line("your search by asking for information on one of:\n\n") 149: @formatter.wrap(namespaces.map {|m| m.full_name}.join(", ")) 150: end 151: end
# File ri/display.rb, line 223 223: def display_flow(flow) 224: if !flow || flow.empty? 225: @formatter.wrap("(no description...)") 226: else 227: @formatter.display_flow(flow) 228: end 229: end
# File ri/display.rb, line 40 40: def display_method_info(method) 41: page do 42: @formatter.draw_line(method.full_name) 43: display_params(method) 44: @formatter.draw_line 45: display_flow(method.comment) 46: if method.aliases && !method.aliases.empty? 47: @formatter.blankline 48: aka = "(also known as " 49: aka << method.aliases.map {|a| a.name }.join(", ") 50: aka << ")" 51: @formatter.wrap(aka) 52: end 53: end 54: end
Display a list of method names
# File ri/display.rb, line 137 137: def display_method_list(methods) 138: page do 139: @formatter.raw_print_line("More than one method matched your request. You can refine") 140: @formatter.raw_print_line("your search by asking for information on one of:\n\n") 141: @formatter.wrap(methods.map {|m| m.full_name} .join(", ")) 142: end 143: end
# File ri/display.rb, line 203 203: def display_params(method) 204: params = method.params 205: 206: if params[0,1] == "(" 207: if method.is_singleton 208: params = method.full_name + params 209: else 210: params = method.name + params 211: end 212: end 213: params.split(/\n/).each do |p| 214: @formatter.wrap(p) 215: @formatter.break_to_newline 216: end 217: if method.source_path then 218: @formatter.blankline 219: @formatter.wrap("Extension from #{method.source_path}") 220: end 221: end
# File ri/display.rb, line 153 153: def list_known_classes(classes) 154: if classes.empty? 155: warn_no_database 156: else 157: page do 158: @formatter.draw_line("Known classes and modules") 159: @formatter.blankline 160: @formatter.wrap(classes.sort.join(", ")) 161: end 162: end 163: end
# File ri/display.rb, line 165 165: def list_known_names(names) 166: if names.empty? 167: warn_no_database 168: else 169: page do 170: names.each {|n| @formatter.raw_print_line(n)} 171: end 172: end 173: end
# File ri/display.rb, line 177 177: def page 178: if pager = setup_pager then 179: begin 180: orig_output = @formatter.output 181: @formatter.output = pager 182: yield 183: ensure 184: @formatter.output = orig_output 185: pager.close 186: end 187: else 188: yield 189: end 190: rescue Errno::EPIPE 191: end
# File ri/display.rb, line 193 193: def setup_pager 194: unless @use_stdout then 195: for pager in [ ENV['PAGER'], "less", "more", 'pager' ].compact.uniq 196: return IO.popen(pager, "w") rescue nil 197: end 198: @use_stdout = true 199: nil 200: end 201: end
# File ri/display.rb, line 231 231: def warn_no_database 232: puts "No ri data found" 233: puts 234: puts "If you've installed Ruby yourself, you need to generate documentation using:" 235: puts 236: puts " make install-doc" 237: puts 238: puts "from the same place you ran `make` to build ruby." 239: puts 240: puts "If you installed Ruby from a packaging system, then you may need to" 241: puts "install an additional package, or ask the packager to enable ri generation." 242: end