mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
61e1cf23ac
And exclusive notations don't exclude other exclusive notations. https://github.com/ruby/rdoc/commit/b8baa9a435
36 lines
672 B
Ruby
36 lines
672 B
Ruby
# frozen_string_literal: true
|
|
##
|
|
# An array of attributes which parallels the characters in a string.
|
|
|
|
class RDoc::Markup::AttrSpan
|
|
|
|
##
|
|
# Creates a new AttrSpan for +length+ characters
|
|
|
|
def initialize(length, exclusive)
|
|
@attrs = Array.new(length, 0)
|
|
@exclusive = exclusive
|
|
end
|
|
|
|
##
|
|
# Toggles +bits+ from +start+ to +length+
|
|
def set_attrs(start, length, bits)
|
|
updated = false
|
|
for i in start ... (start+length)
|
|
if (@exclusive & @attrs[i]) == 0 || (@exclusive & bits) != 0
|
|
@attrs[i] |= bits
|
|
updated = true
|
|
end
|
|
end
|
|
updated
|
|
end
|
|
|
|
##
|
|
# Accesses flags for character +n+
|
|
|
|
def [](n)
|
|
@attrs[n]
|
|
end
|
|
|
|
end
|
|
|