Class: RDoc::Markup::ToBs
- Defined in:
- lib/rdoc/markup/to_bs.rb
Overview
Outputs RDoc markup with hot backspace action! You will probably need a pager to use this output format.
This formatter won’t work on 1.8.6 because it lacks String#chars.
Instance Attribute Summary
Attributes inherited from ToRdoc
#indent, #list_index, #list_type, #list_width, #prefix, #res, #width
Instance Method Summary collapse
-
#accept_heading(heading) ⇒ Object
Makes heading text bold.
-
#accept_list_item_start(list_item) ⇒ Object
Prepares the visitor for consuming
list_item
. -
#annotate(tag) ⇒ Object
Turns on or off regexp handling for
convert_string
. -
#convert_regexp_handling(target) ⇒ Object
Calls convert_string on the result of convert_regexp_handling.
-
#convert_string(string) ⇒ Object
Adds bold or underline mixed with backspaces.
-
#init_tags ⇒ Object
Sets a flag that is picked up by #annotate to do the right thing in #convert_string.
-
#initialize(markup = nil) ⇒ ToBs
constructor
Returns a new ToBs that is ready for hot backspace action!.
Methods inherited from ToRdoc
#accept_blank_line, #accept_block_quote, #accept_indented_paragraph, #accept_list_end, #accept_list_item_end, #accept_list_start, #accept_paragraph, #accept_raw, #accept_rule, #accept_table, #accept_verbatim, #attributes, #end_accepting, #handle_regexp_HARD_BREAK, #handle_regexp_SUPPRESSED_CROSSREF, #start_accepting, #use_prefix, #wrap
Methods inherited from Formatter
#accept_document, #add_regexp_handling_RDOCLINK, #add_regexp_handling_TIDYLINK, #add_tag, #convert, #convert_flow, gen_relative_url, #ignore, #in_tt?, #off_tags, #on_tags, #parse_url, #tt?
Constructor Details
#initialize(markup = nil) ⇒ ToBs
Returns a new ToBs that is ready for hot backspace action!
13 14 15 16 17 18 |
# File 'lib/rdoc/markup/to_bs.rb', line 13 def initialize markup = nil super @in_b = false @in_em = false end |
Instance Method Details
#accept_heading(heading) ⇒ Object
Makes heading text bold.
33 34 35 36 37 38 39 40 41 |
# File 'lib/rdoc/markup/to_bs.rb', line 33 def accept_heading heading use_prefix or @res << ' ' * @indent @res << @headings[heading.level][0] @in_b = true @res << attributes(heading.text) @in_b = false @res << @headings[heading.level][1] @res << "\n" end |
#accept_list_item_start(list_item) ⇒ Object
Prepares the visitor for consuming list_item
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/rdoc/markup/to_bs.rb', line 46 def accept_list_item_start list_item type = @list_type.last case type when :NOTE, :LABEL then bullets = Array(list_item.label).map do |label| attributes(label).strip end.join "\n" bullets << ":\n" unless bullets.empty? @prefix = ' ' * @indent @indent += 2 @prefix << bullets + (' ' * @indent) else bullet = type == :BULLET ? '*' : @list_index.last.to_s + '.' @prefix = (' ' * @indent) + bullet.ljust(bullet.length + 1) width = bullet.length + 1 @indent += width end end |
#annotate(tag) ⇒ Object
Turns on or off regexp handling for convert_string
71 72 73 74 75 76 77 78 79 |
# File 'lib/rdoc/markup/to_bs.rb', line 71 def annotate tag case tag when '+b' then @in_b = true when '-b' then @in_b = false when '+_' then @in_em = true when '-_' then @in_em = false end '' end |
#convert_regexp_handling(target) ⇒ Object
Calls convert_string on the result of convert_regexp_handling
84 85 86 |
# File 'lib/rdoc/markup/to_bs.rb', line 84 def convert_regexp_handling target convert_string super end |
#convert_string(string) ⇒ Object
Adds bold or underline mixed with backspaces
91 92 93 94 95 96 97 98 99 100 |
# File 'lib/rdoc/markup/to_bs.rb', line 91 def convert_string string return string unless @in_b or @in_em chars = if @in_b then string.chars.map do |char| "#{char}\b#{char}" end elsif @in_em then string.chars.map do |char| "_\b#{char}" end end chars.join end |
#init_tags ⇒ Object
Sets a flag that is picked up by #annotate to do the right thing in #convert_string
24 25 26 27 28 |
# File 'lib/rdoc/markup/to_bs.rb', line 24 def add_tag :BOLD, '+b', '-b' add_tag :EM, '+_', '-_' add_tag :TT, '' , '' # we need in_tt information maintained end |