class RDoc::Markup::Attributes

我们管理一组属性。每个属性都有一个符号名称和一个位值。

属性

regexp_handling[R]

正则表达式处理属性类型。请参阅 RDoc::Markup#add_regexp_handling

公共类方法

new() 点击切换源代码

创建一个新的属性集。

# File rdoc/markup/attributes.rb, line 16
def initialize
  @regexp_handling = 1

  @name_to_bitmap = [
    [:_REGEXP_HANDLING_, @regexp_handling],
  ]

  @next_bitmap = @regexp_handling << 1
end

公共实例方法

as_string(bitmap) 点击切换源代码

返回 bitmap 的字符串表示形式

# File rdoc/markup/attributes.rb, line 46
def as_string bitmap
  return 'none' if bitmap.zero?
  res = []

  @name_to_bitmap.each do |name, bit|
    res << name if (bitmap & bit) != 0
  end

  res.join ','
end
bitmap_for(name) 点击切换源代码

name 返回一个唯一的位

# File rdoc/markup/attributes.rb, line 29
def bitmap_for name
  bitmap = @name_to_bitmap.assoc name

  unless bitmap then
    bitmap = @next_bitmap
    @next_bitmap <<= 1
    @name_to_bitmap << [name, bitmap]
  else
    bitmap = bitmap.last
  end

  bitmap
end
each_name_of(bitmap) { |name| ... } 点击切换源代码

bitmap 中产生每个属性名称

# File rdoc/markup/attributes.rb, line 60
def each_name_of bitmap
  return enum_for __method__, bitmap unless block_given?

  @name_to_bitmap.each do |name, bit|
    next if bit == @regexp_handling

    yield name.to_s if (bitmap & bit) != 0
  end
end