diff --git a/strings.go b/strings.go index e0ae628..aa4b4a2 100644 --- a/strings.go +++ b/strings.go @@ -175,6 +175,11 @@ func strval(v interface{}) string { switch v := v.(type) { case string: return v + case *string: + if v == nil { + return "" + } + return *v case []byte: return string(v) case error: diff --git a/strings_test.go b/strings_test.go index 28b9a1e..c05801f 100644 --- a/strings_test.go +++ b/strings_test.go @@ -146,6 +146,14 @@ func TestToString(t *testing.T) { } } +func TestToStringPointers(t *testing.T) { + value := "pointer" + assert.NoError(t, runtv(`{{ toString .Value }}`, "pointer", map[string]interface{}{"Value": &value})) + + var nilValue *string + assert.NoError(t, runtv(`{{ toString .Value }}`, "", map[string]interface{}{"Value": nilValue})) +} + func TestToStrings(t *testing.T) { tpl := `{{ $s := list 1 2 3 | toStrings }}{{ index $s 1 | kindOf }}` assert.NoError(t, runt(tpl, "string"))