| Class | RDoc::RI::HtmlFormatter |
| In: |
ri/formatter.rb
|
| Parent: | RDoc::RI::AttributeFormatter |
This formatter uses HTML.
# File ri/formatter.rb, line 465
465: def display_heading(text, level, indent)
466: level = 4 if level > 4
467: tag("h#{level}") { text }
468: @output.puts
469: end
# File ri/formatter.rb, line 471
471: def display_list(list)
472: case list.type
473: when :BULLET then
474: list_type = "ul"
475: prefixer = proc { |ignored| "<li>" }
476:
477: when :NUMBER, :UPPERALPHA, :LOWERALPHA then
478: list_type = "ol"
479: prefixer = proc { |ignored| "<li>" }
480:
481: when :LABELED then
482: list_type = "dl"
483: prefixer = proc do |li|
484: "<dt><b>" + escape(li.label) + "</b><dd>"
485: end
486:
487: when :NOTE then
488: list_type = "table"
489: prefixer = proc do |li|
490: %{<tr valign="top"><td>#{li.label.gsub(/ /, ' ')}</td><td>}
491: end
492: else
493: fail "unknown list type"
494: end
495:
496: @output.print "<#{list_type}>"
497: list.contents.each do |item|
498: if item.kind_of? RDoc::Markup::Flow::LI
499: prefix = prefixer.call(item)
500: @output.print prefix
501: display_flow_item(item, prefix)
502: else
503: display_flow_item(item)
504: end
505: end
506: @output.print "</#{list_type}>"
507: end
# File ri/formatter.rb, line 509
509: def display_verbatim_flow_item(item, prefix=@indent)
510: @output.print("<pre>")
511: item.body.split(/\n/).each do |line|
512: @output.puts conv_html(line)
513: end
514: @output.puts("</pre>")
515: end
# File ri/formatter.rb, line 446
446: def draw_line(label=nil)
447: if label != nil
448: bold_print(label)
449: end
450: @output.puts("<hr>")
451: end
# File ri/formatter.rb, line 550
550: def escape(str)
551: str = str.gsub(/&/n, '&')
552: str.gsub!(/\"/n, '"')
553: str.gsub!(/>/n, '>')
554: str.gsub!(/</n, '<')
555: str
556: end
# File ri/formatter.rb, line 544
544: def tag(code)
545: @output.print("<#{code}>")
546: @output.print(yield)
547: @output.print("</#{code}>")
548: end
# File ri/formatter.rb, line 525
525: def update_attributes(current, wanted)
526: str = ""
527: # first turn off unwanted ones
528: off = current & ~wanted
529: for quality in [ BOLD, ITALIC, CODE]
530: if (off & quality) > 0
531: str << "</" + ATTR_MAP[quality]
532: end
533: end
534:
535: # now turn on wanted
536: for quality in [ BOLD, ITALIC, CODE]
537: unless (wanted & quality).zero?
538: str << "<" << ATTR_MAP[quality]
539: end
540: end
541: @output.print str
542: end
# File ri/formatter.rb, line 433
433: def write_attribute_text(prefix, line)
434: curr_attr = 0
435: line.each do |achar|
436: attr = achar.attr
437: if achar.attr != curr_attr
438: update_attributes(curr_attr, achar.attr)
439: curr_attr = achar.attr
440: end
441: @output.print(escape(achar.char))
442: end
443: update_attributes(curr_attr, 0) unless curr_attr.zero?
444: end