From 0149a5b4d11dc38ff5a291812c4d4772c5b72e3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Balv=C3=ADn?= Date: Sat, 19 Sep 2026 11:38:17 +0200 Subject: [PATCH] docs(encoder): correct the multi-line string claim Assisted-by: DeepSeek V4.1 Flash --- docs/API.md | 7 +++---- interpres.go | 8 ++++---- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/docs/API.md b/docs/API.md index 0c83ac8..a194730 100644 --- a/docs/API.md +++ b/docs/API.md @@ -412,10 +412,9 @@ omitted, because TOML forbids an empty `[[a]]`. Other empty arrays emit as ### Long strings By default every string is emitted as a basic `"..."` string with the escapes -TOML requires, and a string containing a newline is emitted as an escaped -multi-line basic string. `UseLiteralMultiline(threshold)` switches strings that -contain a newline and are at least `threshold` bytes long to the literal -`'''...'''` form, which carries the newlines verbatim: +TOML requires, a newline among them as `\n`. `UseLiteralMultiline(threshold)` +switches strings that contain a newline and are at least `threshold` bytes long +to the literal `'''...'''` form, which carries the newlines verbatim: ```go out, err := interpres.NewEncoder().UseLiteralMultiline(80).Marshal(cfg) diff --git a/interpres.go b/interpres.go index b313693..d4d4a29 100644 --- a/interpres.go +++ b/interpres.go @@ -261,14 +261,14 @@ func MarshalContext(ctx context.Context, v any) ([]byte, error) { // An Encoder encodes Go values into TOML. // -// All options default to behaviour that preserves byte-for-byte compatibility -// with previous releases and passes the toml-test compliance suite: +// All options default to the behaviour earlier releases used, and the defaults +// pass the toml-test compliance suite in both directions: // // GroupByKind: true (scalars first, then tables, then arrays of tables) // OmitEmptyArrays: false (a nil/empty []string slice emits [] as a value; // a nil/empty []Item struct slice is still skipped) -// LiteralMultilineAt: 0 (always emit basic multi-line strings with -// escape sequences, never literal ones) +// LiteralMultilineAt: 0 (always emit the escaped basic form, never a +// literal one) // // Use the chainable option methods to opt out. The option state is private; // callers that need the underlying knobs reach for the methods rather than