# class RDoc::Markup::ToBs

frozen_string_literal: false

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.

### Public Class Methods

new(markup = nil) click to toggle source

Returns a new ToBs that is ready for hot backspace action!

Calls superclass method RDoc::Markup::ToRdoc.new

    # File lib/rdoc/markup/to_bs.rb, line 13
    def initialize markup = nil
      super

      @in_b  = false
      @in_em = false
    end

### Public Instance Methods

accept_heading(heading) click to toggle source

Makes heading text bold.

    # 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

annotate(tag) click to toggle source

Turns on or off special handling for `convert_string`

    # File lib/rdoc/markup/to_bs.rb, line 46
    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_special(special) click to toggle source

Calls #convert_string on the result of #convert_special

Calls superclass method RDoc::Markup::Formatter#convert_special

    # File lib/rdoc/markup/to_bs.rb, line 59
    def convert_special special
      convert_string super
    end

convert_string(string) click to toggle source

Adds bold or underline mixed with backspaces

    # File lib/rdoc/markup/to_bs.rb, line 66
    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() click to toggle source

Sets a flag that is picked up by annotate to do the right thing in convert_string

    # File lib/rdoc/markup/to_bs.rb, line 24
    def init_tags
      add_tag :BOLD, '+b', '-b'
      add_tag :EM,   '+_', '-_'
      add_tag :TT,   ''  , ''   # we need in_tt information maintained
    end