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  }