Sha256: a2163894b93b41956ef429d76eec224599f3501ca623c766901a6d9a9d5d6fd3

Contents?: true

Size: 1.52 KB

Versions: 12

Compression:

Stored size: 1.52 KB

Contents

require 'rdoc/markup/inline'

##
# 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.

class RDoc::Markup::ToBs < RDoc::Markup::ToRdoc

  def initialize
    super

    @in_b  = false
    @in_em = false
  end

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

  def init_tags
    add_tag :BOLD, '+b', '-b'
    add_tag :EM,   '+_', '-_'
  end

  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

  ##
  # Turns on or off special handling for +convert_string+

  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

  ##
  # Calls convert_string on the result of convert_special

  def convert_special special
    convert_string super
  end

  ##
  # Adds bold or underline mixed with backspaces

  def convert_string string
    return string unless string.respond_to? :chars # your ruby is lame
    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

end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
rdoc-2.5.11 lib/rdoc/markup/to_bs.rb
rdoc-2.5.10 lib/rdoc/markup/to_bs.rb
rdoc-2.5.9 lib/rdoc/markup/to_bs.rb
rdoc-2.5.8 lib/rdoc/markup/to_bs.rb
rdoc-2.5.7 lib/rdoc/markup/to_bs.rb
rdoc-2.5.6 lib/rdoc/markup/to_bs.rb
rdoc-2.5.5 lib/rdoc/markup/to_bs.rb
rdoc-2.5.4 lib/rdoc/markup/to_bs.rb
rdoc-2.5.3 lib/rdoc/markup/to_bs.rb
rdoc-2.5.2 lib/rdoc/markup/to_bs.rb
rdoc-2.5.1 lib/rdoc/markup/to_bs.rb
rdoc-2.5 lib/rdoc/markup/to_bs.rb