mirror of
https://github.com/servo/servo.git
synced 2025-08-07 06:25:32 +01:00
Convert TextRun::iter_natural_lines_for_range to use spans. Fixes #123.
This commit is contained in:
parent
905bff4228
commit
e2c5bcaf37
1 changed files with 7 additions and 7 deletions
|
@ -98,29 +98,29 @@ impl TextRun : TextRunMethods {
|
||||||
assert offset < self.text.len();
|
assert offset < self.text.len();
|
||||||
assert offset + length <= self.text.len();
|
assert offset + length <= self.text.len();
|
||||||
|
|
||||||
let mut clump_start = offset;
|
let mut clump_offset = offset;
|
||||||
let mut clump_end = offset;
|
let mut clump_length = 0;
|
||||||
let mut in_clump = false;
|
let mut in_clump = false;
|
||||||
|
|
||||||
// clump non-linebreaks of nonzero length
|
// clump non-linebreaks of nonzero length
|
||||||
for uint::range(offset, offset + length) |i| {
|
for uint::range(offset, offset + length) |i| {
|
||||||
match (self.glyphs.char_is_newline(i), in_clump) {
|
match (self.glyphs.char_is_newline(i), in_clump) {
|
||||||
(false, true) => { clump_end = i; }
|
(false, true) => { clump_length += 1; }
|
||||||
(false, false) => { in_clump = true; clump_start = i; clump_end = i; }
|
(false, false) => { in_clump = true; clump_offset = i; clump_length = 1; }
|
||||||
(true, false) => { /* chomp whitespace */ }
|
(true, false) => { /* chomp whitespace */ }
|
||||||
(true, true) => {
|
(true, true) => {
|
||||||
in_clump = false;
|
in_clump = false;
|
||||||
// don't include the linebreak 'glyph'
|
// don't include the linebreak 'glyph'
|
||||||
// (we assume there's one GlyphEntry for a newline, and no actual glyphs)
|
// (we assume there's one GlyphEntry for a newline, and no actual glyphs)
|
||||||
if !f(clump_start, clump_end - clump_start + 1) { break }
|
if !f(clump_offset, clump_length) { break }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// flush any remaining chars as a line
|
// flush any remaining chars as a line
|
||||||
if in_clump {
|
if in_clump {
|
||||||
clump_end = offset + length - 1;
|
clump_length = (offset + length) - clump_offset;
|
||||||
f(clump_start, clump_end - clump_start + 1);
|
f(clump_offset, clump_length);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue