goccy / go-yaml

YAML support for the Go language

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Trailing new lines are added to literal strings

nervo opened this issue · comments

Even if they are not part of a literal string, trailing newlines are systematically added to the string

foo: |
  bar


# ↑↑↑ Note the two newlines right after the literal string

In this siituation, the bar value will be "bar\n\n" instead of "bar\n".

Note that this also applies with strip sign |-

Here is a simple reproduction case:

package main

import (
	"fmt"
	goYaml "github.com/goccy/go-yaml"
)

func main() {
	yml := `
foo: |-
  bar


`
	var vmap[string]any
	goYaml.Unmarshal([]byte(yml), &v)

	fmt.Println(v["foo"])
	// -> "bar\n\n"
}

And a related playground: https://go.dev/play/p/XG6oCnbwwiz

  • Go version: 1.21.2
  • go-yaml's Version: v1.11.2

Partially fixed by #421 :)

Now, additional trailing lines only occurs without the strip (-) indicator.

@zoncoen may i ask you some help on this ?