class RDoc::Markup::AttributeManager
管理文本块中属性的更改
常量
- NULL
NUL 字符
属性
attributes[R]
为此标记对象启用的属性。
exclusive_bitmap[R]
互斥映射的位
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_pos
到 end_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