1
0
mirror of https://github.com/taigrr/yq synced 2025-01-18 04:53:17 -08:00

Fixed special characters in path for merging

This commit is contained in:
Mike Farah
2020-02-18 20:18:49 +11:00
parent f5c3beb159
commit a46386e093
2 changed files with 33 additions and 5 deletions

View File

@@ -71,13 +71,20 @@ func mergePathStackToString(pathStack []interface{}, appendArrays bool) string {
s := fmt.Sprintf("%v", path)
var _, errParsingInt = strconv.ParseInt(s, 10, 64) // nolint
hasDot := strings.Contains(s, ".")
if hasDot || errParsingInt == nil {
sb.WriteString("\"")
hasSpecial := strings.Contains(s, ".") || strings.Contains(s, "[") || strings.Contains(s, "]") || strings.Contains(s, "\"")
hasDoubleQuotes := strings.Contains(s, "\"")
wrappingCharacterStart := "\""
wrappingCharacterEnd := "\""
if hasDoubleQuotes {
wrappingCharacterStart = "("
wrappingCharacterEnd = ")"
}
if hasSpecial || errParsingInt == nil {
sb.WriteString(wrappingCharacterStart)
}
sb.WriteString(s)
if hasDot || errParsingInt == nil {
sb.WriteString("\"")
if hasSpecial || errParsingInt == nil {
sb.WriteString(wrappingCharacterEnd)
}
}