Method deprecated or moved
This method is deprecated or moved on the latest stable version.
The last existing version (v2_2_9) is shown here.
split_into_flow()
public
Splits the string into chunks by attribute change
Show source
def split_into_flow
res = []
current_attr = 0
str_len = @str.length
i = 0
i += 1 while i < str_len and @str[i].chr == "\00""
start_pos = i
# then scan the string, chunking it on attribute changes
while i < str_len
new_attr = @attrs[i]
if new_attr != current_attr
if i > start_pos
res << copy_string(start_pos, i)
start_pos = i
end
res << change_attribute(current_attr, new_attr)
current_attr = new_attr
if (current_attr & @attributes.special) != 0 then
i += 1 while
i < str_len and (@attrs[i] & @attributes.special) != 0
res << RDoc::Markup::Special.new(current_attr,
copy_string(start_pos, i))
start_pos = i
next
end
end
# move on, skipping any invisible characters
begin
i += 1
end while i < str_len and @str[i].chr == "\00""
end
if start_pos < str_len
res << copy_string(start_pos, str_len)
end
res << change_attribute(current_attr, 0) if current_attr != 0
res
end