Class: RDoc::Markup::Attributes

Inherits:
Object
  • Object
show all
Defined in:
lib/rdoc/markup/attributes.rb

Overview

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeAttributes

Creates a new attributes set.


16
17
18
19
20
21
22
23
24
# File 'lib/rdoc/markup/attributes.rb', line 16

def initialize
  @regexp_handling = 1

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

  @next_bitmap = @regexp_handling << 1
end

Instance Attribute Details

#regexp_handlingObject (readonly)

The regexp handling attribute type. See RDoc::Markup#add_regexp_handling


11
12
13
# File 'lib/rdoc/markup/attributes.rb', line 11

def regexp_handling
  @regexp_handling
end

Instance Method Details

#as_string(bitmap) ⇒ Object

Returns a string representation of bitmap


46
47
48
49
50
51
52
53
54
55
# File 'lib/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) ⇒ Object

Returns a unique bit for name


29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/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) ⇒ Object

yields each attribute name in bitmap


60
61
62
63
64
65
66
67
68
# File 'lib/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