go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/utils/stringx/merge.go (about) 1 // Copyright (c) Mondoo, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package stringx 5 6 import ( 7 "bytes" 8 "strings" 9 ) 10 11 // MergeSideBySide merges each line for two multiline strings 12 func MergeSideBySide(layer1 string, layer2 string) string { 13 layer1Lines := strings.Split(layer1, "\n") 14 layer2Lines := strings.Split(layer2, "\n") 15 16 len1 := len(layer1Lines) 17 len2 := len(layer2Lines) 18 maxLen := len1 19 if len2 > maxLen { 20 maxLen = len2 21 } 22 23 b := bytes.Buffer{} 24 for i := 0; i < maxLen; i++ { 25 if i < len1 { 26 b.WriteString(layer1Lines[i]) 27 } 28 if i < len2 { 29 b.WriteString(layer2Lines[i]) 30 } 31 b.WriteString("\n") 32 } 33 return b.String() 34 }