| Class | RDoc::RI::AttributeFormatter |
| In: |
ri/formatter.rb
|
| Parent: | RDoc::RI::Formatter |
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.
# File ri/formatter.rb, line 314
314: def add_attributes_to(txt)
315: tokens = txt.split(%r{(</?(?:b|code|em|i|tt)>)})
316: text = AttributeString.new
317: attributes = 0
318: tokens.each do |tok|
319: case tok
320: when %r{^</(\w+)>$} then attributes &= ~(ATTR_MAP[$1]||0)
321: when %r{^<(\w+)>$} then attributes |= (ATTR_MAP[$1]||0)
322: else
323: tok.split(//).each {|ch| text << AttrChar.new(ch, attributes)}
324: end
325: end
326: text
327: end
Overrides base class. Looks for … etc sequences and generates an array of AttrChars. This array is then used as the basis for the split.
# File ri/formatter.rb, line 276
276: def wrap(txt, prefix=@indent, linelen=@width)
277: return unless txt && !txt.empty?
278:
279: txt = add_attributes_to(txt)
280: next_prefix = prefix.tr("^ ", " ")
281: linelen -= prefix.size
282:
283: line = []
284:
285: until txt.empty?
286: word = txt.next_word
287: if word.size + line.size > linelen
288: write_attribute_text(prefix, line)
289: prefix = next_prefix
290: line = []
291: end
292: line.concat(word)
293: end
294:
295: write_attribute_text(prefix, line) if line.length > 0
296: end