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 }