Class | RI::HtmlFormatter |
In: |
ri/ri_formatter.rb
|
Parent: | AttributeFormatter |
This formatter uses HTML.
ATTR_MAP | = | { BOLD => "b>", ITALIC => "i>", CODE => "tt>" |
# File ri/ri_formatter.rb, line 506 506: def display_heading(text, level, indent) 507: level = 4 if level > 4 508: tag("h#{level}") { text } 509: puts 510: end
# File ri/ri_formatter.rb, line 514 514: def display_list(list) 515: 516: case list.type 517: when SM::ListBase::BULLET 518: list_type = "ul" 519: prefixer = proc { |ignored| "<li>" } 520: 521: when SM::ListBase::NUMBER, 522: SM::ListBase::UPPERALPHA, 523: SM::ListBase::LOWERALPHA 524: list_type = "ol" 525: prefixer = proc { |ignored| "<li>" } 526: 527: when SM::ListBase::LABELED 528: list_type = "dl" 529: prefixer = proc do |li| 530: "<dt><b>" + escape(li.label) + "</b><dd>" 531: end 532: 533: when SM::ListBase::NOTE 534: list_type = "table" 535: prefixer = proc do |li| 536: %{<tr valign="top"><td>#{li.label.gsub(/ /, ' ')}</td><td>} 537: end 538: else 539: fail "unknown list type" 540: end 541: 542: print "<#{list_type}>" 543: list.contents.each do |item| 544: if item.kind_of? SM::Flow::LI 545: prefix = prefixer.call(item) 546: print prefix 547: display_flow_item(item, prefix) 548: else 549: display_flow_item(item) 550: end 551: end 552: print "</#{list_type}>" 553: end
# File ri/ri_formatter.rb, line 555 555: def display_verbatim_flow_item(item, prefix=@indent) 556: print("<pre>") 557: item.body.split(/\n/).each do |line| 558: puts conv_html(line) 559: end 560: puts("</pre>") 561: end
# File ri/ri_formatter.rb, line 487 487: def draw_line(label=nil) 488: if label != nil 489: bold_print(label) 490: end 491: puts("<hr>") 492: end
# File ri/ri_formatter.rb, line 596 596: def escape(str) 597: str. 598: gsub(/&/n, '&'). 599: gsub(/\"/n, '"'). 600: gsub(/>/n, '>'). 601: gsub(/</n, '<') 602: end
# File ri/ri_formatter.rb, line 590 590: def tag(code) 591: print("<#{code}>") 592: print(yield) 593: print("</#{code}>") 594: end
# File ri/ri_formatter.rb, line 571 571: def update_attributes(current, wanted) 572: str = "" 573: # first turn off unwanted ones 574: off = current & ~wanted 575: for quality in [ BOLD, ITALIC, CODE] 576: if (off & quality) > 0 577: str << "</" + ATTR_MAP[quality] 578: end 579: end 580: 581: # now turn on wanted 582: for quality in [ BOLD, ITALIC, CODE] 583: unless (wanted & quality).zero? 584: str << "<" << ATTR_MAP[quality] 585: end 586: end 587: print str 588: end
# File ri/ri_formatter.rb, line 474 474: def write_attribute_text(prefix, line) 475: curr_attr = 0 476: line.each do |achar| 477: attr = achar.attr 478: if achar.attr != curr_attr 479: update_attributes(curr_attr, achar.attr) 480: curr_attr = achar.attr 481: end 482: print(escape(achar.char)) 483: end 484: update_attributes(curr_attr, 0) unless curr_attr.zero? 485: end