Support literal multiline marshal (#485)

Use struct tag `multiline:"true" literal:"true"` to enable it.
This commit is contained in:
Thomas Pelletier
2021-03-25 20:57:38 -04:00
committed by GitHub
parent b59c12a70d
commit ce6fbd7bc0
4 changed files with 46 additions and 1 deletions
+9 -1
View File
@@ -158,7 +158,15 @@ func tomlValueStringRepresentation(v interface{}, commented string, indent strin
return strings.ToLower(strconv.FormatFloat(value, 'f', -1, bits)), nil
case string:
if tv.multiline {
return "\"\"\"\n" + encodeMultilineTomlString(value, commented) + "\"\"\"", nil
if tv.literal {
b := strings.Builder{}
b.WriteString("'''\n")
b.Write([]byte(value))
b.WriteString("\n'''")
return b.String(), nil
} else {
return "\"\"\"\n" + encodeMultilineTomlString(value, commented) + "\"\"\"", nil
}
}
return "\"" + encodeTomlString(value) + "\"", nil
case []byte: