From 2a45c1c3281d767b0371e06b9ac72fd2038a6280 Mon Sep 17 00:00:00 2001 From: Brad Rydzewski Date: Wed, 29 May 2019 19:13:32 -0700 Subject: [PATCH] improve escaping when colon in string --- yaml/pretty/util.go | 2 +- yaml/pretty/writer.go | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/yaml/pretty/util.go b/yaml/pretty/util.go index 75834d7..21b9ce7 100644 --- a/yaml/pretty/util.go +++ b/yaml/pretty/util.go @@ -65,7 +65,7 @@ func isZero(v interface{}) bool { func isQuoted(b rune) bool { switch b { - case ':', '#', ',', '[', ']', '{', '}', '&', '*', '!', '|', '>', '\'', '"', '%', '@', '`': + case '#', ',', '[', ']', '{', '}', '&', '*', '!', '|', '>', '\'', '"', '%', '@', '`': return true case '\a', '\b', '\f', '\n', '\r', '\t', '\v': return true diff --git a/yaml/pretty/writer.go b/yaml/pretty/writer.go index 8de89d2..b906e17 100644 --- a/yaml/pretty/writer.go +++ b/yaml/pretty/writer.go @@ -195,11 +195,17 @@ func writeEncode(w writer, v string) { w.WriteByte('"') return } + var prev rune for _, b := range v { if isQuoted(b) { fmt.Fprintf(w, "%q", v) return } + if b == ' ' && prev == ':' { + fmt.Fprintf(w, "%q", v) + return + } + prev = b } w.WriteString(v) }