fn drain(w: *Writer, data: []const []const u8, splat: usize) Io.Writer.Error!usize w: *Writerdata: []const []const u8splat: usize601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617 fn drain(w: *Writer, data: []const []const u8, splat: usize) Io.Writer.Error!usize {
const sew: *StringEscapeWriter = @alignCast(@fieldParentPtr("writer", w));
const out = sew.out;
try stringEscape(w.buffered(), out);
w.end = 0;
var n: usize = 0;
for (data[0 .. data.len - 1]) |bytes| {
try stringEscape(bytes, out);
n += bytes.len;
}
const pattern = data[data.len - 1];
for (0..splat) |_| {
try stringEscape(pattern, out);
n += pattern.len;
}
return n;
}