class RDoc::Markup::ToAnsi

输出带有鲜艳 ANSI 颜色的 RDoc 标记!

公共类方法

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

创建一个新的 ToAnsi 访问器,它已准备好输出鲜艳的 ANSI 颜色!

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

  @headings.clear
  @headings[1] = ["\e[1;32m", "\e[m"] # bold
  @headings[2] = ["\e[4;32m", "\e[m"] # underline
  @headings[3] = ["\e[32m",   "\e[m"] # just green
end

公共实例方法

accept_list_item_end(list_item) 点击切换源代码

覆盖缩进宽度以确保输出正确对齐。

# File rdoc/markup/to_ansi.rb, line 31
def accept_list_item_end list_item
  width = case @list_type.last
          when :BULLET then
            2
          when :NOTE, :LABEL then
            if @prefix then
              @res << @prefix.strip
              @prefix = nil
            end

            @res << "\n" unless res.length == 1
            2
          else
            bullet = @list_index.last.to_s
            @list_index[-1] = @list_index.last.succ
            bullet.length + 2
          end

  @indent -= width
end
accept_list_item_start(list_item) 点击切换源代码

为 note 和 label 列表项添加颜色

# File rdoc/markup/to_ansi.rb, line 55
def accept_list_item_start list_item
  bullet = case @list_type.last
           when :BULLET then
             '*'
           when :NOTE, :LABEL then
             labels = Array(list_item.label).map do |label|
               attributes(label).strip
             end.join "\n"

             labels << ":\n" unless labels.empty?

             labels
           else
             @list_index.last.to_s + '.'
           end

  case @list_type.last
  when :NOTE, :LABEL then
    @indent += 2
    @prefix = bullet + (' ' * @indent)
  else
    @prefix = (' ' * @indent) + bullet.ljust(bullet.length + 1)

    width = bullet.gsub(/\e\[[\d;]*m/, '').length + 1

    @indent += width
  end
end
init_tags() 点击切换源代码

将属性映射到 ANSI 序列

# File rdoc/markup/to_ansi.rb, line 22
def init_tags
  add_tag :BOLD, "\e[1m", "\e[m"
  add_tag :TT,   "\e[7m", "\e[m"
  add_tag :EM,   "\e[4m", "\e[m"
end
start_accepting() 点击切换源代码

开始接收并重置屏幕

# File rdoc/markup/to_ansi.rb, line 87
def start_accepting
  super

  @res = ["\e[0m"]
end