From 39314e3403bf473ef6e416067f5a414adeba80e1 Mon Sep 17 00:00:00 2001 From: Andinus Date: Sat, 22 Feb 2025 11:18:50 +0530 Subject: [PATCH] Handle all pointer types generically --- README.org | 4 ++++ template_nest.go | 15 +++++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/README.org b/README.org index 9bb4c7d..cbc8667 100644 --- a/README.org +++ b/README.org @@ -10,6 +10,10 @@ https://pypi.org/project/template-nest/. * News +** v0.1.5 - 2025-02-22 + ++ Handle all pointer types generically. + ** v0.1.4 - 2025-01-09 + Fix nil pointer dereference error. diff --git a/template_nest.go b/template_nest.go index 25b5dc4..c9c9c67 100644 --- a/template_nest.go +++ b/template_nest.go @@ -283,6 +283,15 @@ func (nest *TemplateNest) Render(toRender interface{}) (string, error) { return "", nil } + // Handle pointer types generically + if reflect.TypeOf(toRender).Kind() == reflect.Ptr { + if reflect.ValueOf(toRender).IsNil() { + return "", nil + } + // Dereference the pointer and recursively call Render + return nest.Render(reflect.ValueOf(toRender).Elem().Interface()) + } + if reflect.TypeOf(toRender).Kind() == reflect.Slice { return nest.renderSlice(toRender) } @@ -294,12 +303,6 @@ func (nest *TemplateNest) Render(toRender interface{}) (string, error) { case bool: return fmt.Sprintf("%t", v), nil - case *string: - if v == nil { - return "", nil - } - return nest.Render(*v) - case string: if nest.option.NoEscapeInput { return v, nil