diff --git a/README.org b/README.org index cbc8667..51a7a2f 100644 --- a/README.org +++ b/README.org @@ -10,6 +10,14 @@ https://pypi.org/project/template-nest/. * News +** v0.1.6 - 2025-12-02 + ++ Treat empty hash as nil + + Tom: I think that if go's behaviour is to insert an empty map when nil is + returned as a templatenest.Hash, then we need to change the templatenest + behaviour to regard an empty map as being nil. + ** v0.1.5 - 2025-02-22 + Handle all pointer types generically. diff --git a/template_nest.go b/template_nest.go index c9c9c67..a26713e 100644 --- a/template_nest.go +++ b/template_nest.go @@ -364,10 +364,15 @@ func (nest *TemplateNest) renderSlice(toRender interface{}) (string, error) { } func (nest *TemplateNest) renderHash(hash map[string]interface{}) (string, error) { + // If the hash is completely empty, return an empty string. + if len(hash) == 0 { + return "", nil + } + tLabel, ok := hash[*nest.option.NameLabel] if !ok { return "", fmt.Errorf( - "encountered hash with no name label (name label: `%s`)", nest.option.NameLabel, + "encountered hash with no name label (name label: `%+v`)", nest.option.NameLabel, ) } diff --git a/tests/01_render_test.go b/tests/01_render_test.go index fdf7535..f63f815 100644 --- a/tests/01_render_test.go +++ b/tests/01_render_test.go @@ -174,6 +174,19 @@ func TestRenderNoNameLabel(t *testing.T) { } } +func TestRenderEmptyHash(t *testing.T) { + nest, err := templatenest.New(templatenest.Option{TemplateDir: "templates"}) + if err != nil { + t.Fatalf("Failed to initialize TemplateNest: %+v", err) + } + + page := templatenest.Hash{} + + render, err := nest.Render(page) + assert.Nil(t, err) + assert.Equal(t, "", render) +} + func TestRenderSimplePageArrays(t *testing.T) { nest, err := templatenest.New(templatenest.Option{ TemplateDir: "templates",