fix: reflow should add whitespace to line length calculation

This commit is contained in:
CJ van den Berg 2026-02-02 12:11:31 +01:00
parent 7b6e75cc9d
commit cdfa463ce7
Signed by: neurocyte
GPG key ID: 8EB1E1BB660E3FB9

View file

@ -21,24 +21,29 @@ pub fn reflow(allocator: std.mem.Allocator, text: []const u8, width: usize) erro
.begin => { .begin => {
if (first) { if (first) {
try writer.writeAll(prefix.first); try writer.writeAll(prefix.first);
line_len += prefix.first.len;
first = false; first = false;
} else { } else {
try writer.writeAll(prefix.continuation); try writer.writeAll(prefix.continuation);
line_len += prefix.continuation.len;
var pad = prefix.first.len - prefix.continuation.len; var pad = prefix.first.len - prefix.continuation.len;
while (pad > 0) : (pad -= 1) while (pad > 0) : (pad -= 1) {
try writer.writeByte(' '); try writer.writeByte(' ');
line_len += 1;
}
} }
line_len += prefix.len;
continue :blk .words; continue :blk .words;
}, },
.words => { .words => {
if (line_len > prefix.len and line_len + word.len + 1 >= width - 1) { if (line_len > prefix.len) {
try writer.writeByte('\n'); if (line_len + word.len + 1 >= width) {
line_len = 0; try writer.writeByte('\n');
continue :blk .begin; line_len = 0;
} continue :blk .begin;
if (line_len > prefix.len) }
try writer.writeByte(' '); try writer.writeByte(' ');
line_len += 1;
}
try writer.writeAll(word); try writer.writeAll(word);
line_len += word.len; line_len += word.len;
}, },