Function multilineString [src]

Like value, but always serializes to a multiline string literal. Returns error.InnerCarriageReturn if val contains a CR not followed by a newline, since multiline strings cannot represent CR without a following newline.

Prototype

pub fn multilineString( self: *Serializer, val: []const u8, options: MultilineStringOptions, ) MultilineStringError!void

Parameters

self: *Serializerval: []const u8options: MultilineStringOptions

Possible Errors

InnerCarriageReturn
WriteFailed Error

See the Writer implementation for detailed diagnostics.

Source

pub fn multilineString( self: *Serializer, val: []const u8, options: MultilineStringOptions, ) MultilineStringError!void { // Make sure the string does not contain any carriage returns not followed by a newline var i: usize = 0; while (i < val.len) : (i += 1) { if (val[i] == '\r') { if (i + 1 < val.len) { if (val[i + 1] == '\n') { i += 1; continue; } } return error.InnerCarriageReturn; } } if (!options.top_level) { try self.newline(); try self.indent(); } try self.writer.writeAll("\\\\"); for (val) |c| { if (c != '\r') { try self.writer.writeByte(c); // We write newlines here even if whitespace off if (c == '\n') { try self.indent(); try self.writer.writeAll("\\\\"); } } } if (!options.top_level) { try self.writer.writeByte('\n'); // Even if whitespace off try self.indent(); } }