class RDoc::Markup::ToBs

输出带有热删除操作的 RDoc 标记!您可能需要一个分页器来使用此输出格式。

此格式化程序在 1.8.6 上不起作用,因为它缺少 String#chars。

公共类方法

new(markup = nil) 点击切换源代码

返回一个新的 ToBs,它已准备好进行热删除操作!

调用超类方法 RDoc::Markup::ToRdoc::new
# File rdoc/markup/to_bs.rb, line 13
def initialize markup = nil
  super

  @in_b  = false
  @in_em = false
end

公共实例方法

accept_heading(heading) 点击切换源代码

将标题文本设为粗体。

# File 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) 点击切换源代码

准备访问者以消费 list_item

# File 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) 点击切换源代码

convert_string 开启或关闭正则表达式处理

# File 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) 点击切换源代码

convert_regexp_handling 的结果上调用 convert_string

# File rdoc/markup/to_bs.rb, line 84
def convert_regexp_handling target
  convert_string super
end
convert_string(string) 点击切换源代码

添加与退格键混合的粗体或下划线

# File 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() 点击切换源代码

设置一个标志,该标志由 annotate 拾取,以便在 convert_string 中执行正确的操作

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