Files
opentf/internal/command/jsonformat/computed/renderers/string.go
Liam Cervante 38afb41787 Structured plan renderer: Introduce support for multiline and JSON strings (#32488)
* pause implementation

* change -> diff, value -> change

* add support for json and multiline strings to the primitive renderer

* goimports

* remove unused function

* go fmt

* address comments
2023-01-11 09:35:36 +01:00

43 lines
711 B
Go

package renderers
import (
"encoding/json"
"strings"
)
type evaluatedString struct {
String string
Json interface{}
IsMultiline bool
}
func evaluatePrimitiveString(value interface{}) evaluatedString {
if value == nil {
return evaluatedString{String: "[dark_gray]null[reset]"}
}
str := value.(string)
if strings.HasPrefix(str, "{") || strings.HasPrefix(str, "[") {
var jv interface{}
if err := json.Unmarshal([]byte(str), &jv); err == nil {
return evaluatedString{
String: str,
Json: jv,
}
}
}
if strings.Contains(str, "\n") {
return evaluatedString{
String: strings.TrimSpace(str),
IsMultiline: true,
}
}
return evaluatedString{
String: str,
}
}