123456789_123456789_123456789_123456789_123456789_

Class: RDoc::Markup::Attributes

Relationships & Source Files
Inherits: Object
Defined in: lib/rdoc/markup/attributes.rb

Overview

We manage a set of attributes. Each attribute has a symbol name and a bit value.

Class Method Summary

Instance Attribute Summary

  • #special readonly

    The special attribute type.

Instance Method Summary

Constructor Details

.newAttributes

Creates a new attributes set.

[ GitHub ]

  
# File 'lib/rdoc/markup/attributes.rb', line 15

def initialize
  @special = 1

  @name_to_bitmap = [
    [:_SPECIAL_, @special],
  ]

  @next_bitmap = @special << 1
end

Instance Attribute Details

#special (readonly)

The special attribute type. See RDoc::Markup#add_special

[ GitHub ]

  
# File 'lib/rdoc/markup/attributes.rb', line 10

attr_reader :special

Instance Method Details

#as_string(bitmap)

Returns a string representation of bitmap

[ GitHub ]

  
# File 'lib/rdoc/markup/attributes.rb', line 45

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)

Returns a unique bit for name

[ GitHub ]

  
# File 'lib/rdoc/markup/attributes.rb', line 28

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)

yields each attribute name in bitmap

[ GitHub ]

  
# File 'lib/rdoc/markup/attributes.rb', line 59

def each_name_of bitmap
  return enum_for __method__, bitmap unless block_given?

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

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