github.com/metux/go-metabuild@v0.0.0-20240118143255-d9ed5ab697f9/util/strs/cliteral.go (about)

     1  package strs
     2  
     3  import (
     4  	"strings"
     5  )
     6  
     7  func CLiteral(str string, indent string, maxWidth int) string {
     8  	escaped := StrEscC(str)
     9  
    10  	sb := strings.Builder{}
    11  
    12  	l1 := ""
    13  	for len(escaped) > maxWidth {
    14  		l1 = escaped[:maxWidth]
    15  		escaped = escaped[maxWidth:]
    16  		if l1[len(l1)-1] == '\\' {
    17  			l1 = l1 + escaped[:1]
    18  			escaped = escaped[1:]
    19  		}
    20  		sb.WriteString(indent)
    21  		sb.WriteString("\"")
    22  		sb.WriteString(l1)
    23  		sb.WriteString("\"\n")
    24  	}
    25  
    26  	if len(escaped) > 0 {
    27  		sb.WriteString(indent)
    28  		sb.WriteString("\"")
    29  		sb.WriteString(escaped)
    30  		sb.WriteString("\"\n")
    31  	}
    32  
    33  	return sb.String()
    34  }