class RDoc::Markup::AttributeManager

管理文本块中属性的更改

常量

NULL

NUL 字符

属性

attributes[R]

为此标记对象启用的属性。

exclusive_bitmap[R]

互斥映射的位

html_tags[R]

此映射将 HTML 标签映射到相应的属性字符

matching_word_pairs[R]

此映射围绕单词出现的定界符(例如 粗体tt),其中开始和结束定界符相同。这使我们可以优化正则表达式

protectable[R]

通常会被处理的字符前的 \ 关闭处理。我们通过将 < 转换为 <#{PROTECT} 来实现此目的

regexp_handlings[R]

此映射将 _regexp 处理_ 序列映射到名称。 regexp 处理序列类似于 WikiWord

word_pair_map[R]

当定界符不同时使用它。在这种情况下,哈希将模式映射到属性字符

公共类方法

new() 点击以切换源代码

创建一个新的属性管理器,该管理器可以理解粗体、强调和电传打字文本。

# File rdoc/markup/attribute_manager.rb, line 80
def initialize
  @html_tags = {}
  @matching_word_pairs = {}
  @protectable = %w[<]
  @regexp_handlings = []
  @word_pair_map = {}
  @exclusive_bitmap = 0
  @attributes = RDoc::Markup::Attributes.new

  add_word_pair "*", "*", :BOLD, true
  add_word_pair "_", "_", :EM, true
  add_word_pair "+", "+", :TT, true

  add_html "em", :EM, true
  add_html "i",  :EM, true
  add_html "b",  :BOLD, true
  add_html "tt",   :TT, true
  add_html "code", :TT, true
end

公共实例方法

attribute(turn_on, turn_off) 点击以切换源代码

返回具有给定 turn_on 和 turn_off 位设置的属性对象

# File rdoc/markup/attribute_manager.rb, line 103
def attribute(turn_on, turn_off)
  RDoc::Markup::AttrChanger.new turn_on, turn_off
end
change_attribute(current, new) 点击以切换源代码

将当前属性从 current 更改为 new

# File rdoc/markup/attribute_manager.rb, line 110
def change_attribute current, new
  diff = current ^ new
  attribute(new & diff, current & diff)
end
changed_attribute_by_name(current_set, new_set) 点击以切换源代码

由测试使用,通过名称将属性从 current_set 更改为 new_set

# File rdoc/markup/attribute_manager.rb, line 119
def changed_attribute_by_name current_set, new_set
  current = new = 0
  current_set.each do |name|
    current |= @attributes.bitmap_for(name)
  end

  new_set.each do |name|
    new |= @attributes.bitmap_for(name)
  end

  change_attribute(current, new)
end
copy_string(start_pos, end_pos) 点击以切换源代码

从当前字符串复制 start_posend_pos

# File rdoc/markup/attribute_manager.rb, line 135
def copy_string(start_pos, end_pos)
  res = @str[start_pos...end_pos]
  res.gsub!(/\000/, '')
  res
end