Class: RDoc::RI::AttributeFormatter

Inherits:
Formatter
  • Object
show all
Defined in:
lib/rdoc/ri/formatter.rb

Overview

Handle text with attributes. We’re a base class: there are different presentation classes (one, for example, uses overstrikes to handle bold and underlining, while another using ANSI escape sequences.

Direct Known Subclasses

AnsiFormatter, HtmlFormatter, OverstrikeFormatter

Defined Under Namespace

Classes: AttrChar, AttributeString

Constant Summary collapse

BOLD =
1
ITALIC =
2
CODE =
4
ATTR_MAP =
{
  "b"    => BOLD,
  "code" => CODE,
  "em"   => ITALIC,
  "i"    => ITALIC,
  "tt"   => CODE
}

Constants inherited from Formatter

Formatter::FORMATTERS

Instance Attribute Summary

Attributes inherited from Formatter

#indent, #output

Instance Method Summary collapse

Methods inherited from Formatter

#blankline, #break_to_newline, #conv_html, #conv_markup, #display_flow, #display_flow_item, #display_heading, #display_list, #display_verbatim_flow_item, #draw_line, for, #initialize, list, #raw_print_line, #strip_attributes

Constructor Details

This class inherits a constructor from RDoc::RI::Formatter

Instance Method Details

#wrap(txt, prefix = @indent, linelen = @width) ⇒ Object

Overrides base class. Looks for ... etc sequences and generates an array of AttrChars. This array is then used as the basis for the split.



289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
# File 'lib/rdoc/ri/formatter.rb', line 289

def wrap(txt, prefix=@indent, linelen=@width)
  return unless txt && !txt.empty?

  txt = add_attributes_to(txt)
  next_prefix = prefix.tr("^ ", " ")
  linelen -= prefix.size

  line = []

  until txt.empty?
    word = txt.next_word
    if word.size + line.size > linelen
      write_attribute_text(prefix, line)
      prefix = next_prefix
      line = []
    end
    line.concat(word)
  end

  write_attribute_text(prefix, line) if line.length > 0
end