From 892057bb7f5561c8217207e3328b1eb29fa6840e Mon Sep 17 00:00:00 2001 From: andig Date: Mon, 27 Feb 2023 16:15:26 +0100 Subject: [PATCH] chore: improve trim empty lines --- util/templates/utils.go | 11 +++++++++++ util/templates/utils_test.go | 14 ++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/util/templates/utils.go b/util/templates/utils.go index 67119d315..13286bc62 100644 --- a/util/templates/utils.go +++ b/util/templates/utils.go @@ -4,6 +4,7 @@ import ( "fmt" "strings" + "github.com/samber/lo" "gopkg.in/yaml.v3" ) @@ -31,3 +32,13 @@ func yamlQuote(value string) string { return value } + +func trimEmptyLines(s string) string { + lines := strings.Split(s, "\n") + for i, line := range lines { + if strings.TrimSpace(line) == "" { + lines[i] = "" + } + } + return strings.Join(lo.Compact(lines), "\n") +} diff --git a/util/templates/utils_test.go b/util/templates/utils_test.go index 1a543aba8..c2f1fb12b 100644 --- a/util/templates/utils_test.go +++ b/util/templates/utils_test.go @@ -32,3 +32,17 @@ func TestYamlDecodeLeadingZero(t *testing.T) { t.Fatalf("expected %s, got %s", exp, res) } } + +func TestTrimEmptyLines(t *testing.T) { + lines := ` +foo + bar + + + buz + ` + + assert.Equal(t, trimEmptyLines(lines), `foo + bar + buz`) +}