From 65c0dd3e27c3bafc2ae18093c18f4aaeca156da6 Mon Sep 17 00:00:00 2001 From: Virgil Date: Tue, 31 Mar 2026 19:22:02 +0000 Subject: [PATCH] fix(html): default nil render contexts Co-Authored-By: Virgil --- layout.go | 3 +++ layout_test.go | 10 ++++++++++ responsive.go | 3 +++ responsive_test.go | 11 +++++++++++ 4 files changed, 27 insertions(+) diff --git a/layout.go b/layout.go index 25dbc4f..67faeec 100644 --- a/layout.go +++ b/layout.go @@ -109,6 +109,9 @@ func (l *Layout) Render(ctx *Context) string { if l == nil { return "" } + if ctx == nil { + ctx = NewContext() + } b := newTextBuilder() diff --git a/layout_test.go b/layout_test.go index e43c9e8..704b52f 100644 --- a/layout_test.go +++ b/layout_test.go @@ -137,3 +137,13 @@ func TestLayout_Methods_NilLayout_Ugly(t *testing.T) { t.Fatalf("nil layout render should be empty, got %q", got) } } + +func TestLayout_Render_NilContext_Good(t *testing.T) { + layout := NewLayout("C").C(Raw("content")) + + got := layout.Render(nil) + want := `
content
` + if got != want { + t.Fatalf("layout.Render(nil) = %q, want %q", got, want) + } +} diff --git a/responsive.go b/responsive.go index b892e8d..1f0dd06 100644 --- a/responsive.go +++ b/responsive.go @@ -38,6 +38,9 @@ func (r *Responsive) Render(ctx *Context) string { if r == nil { return "" } + if ctx == nil { + ctx = NewContext() + } b := newTextBuilder() for _, v := range r.variants { diff --git a/responsive_test.go b/responsive_test.go index b93fd46..58f67c9 100644 --- a/responsive_test.go +++ b/responsive_test.go @@ -99,3 +99,14 @@ func TestResponsive_Variant_NilResponsive_Ugly(t *testing.T) { t.Fatalf("unexpected output from nil receiver Variant path: %q", output) } } + +func TestResponsive_Render_NilContext_Good(t *testing.T) { + r := NewResponsive(). + Variant("mobile", NewLayout("C").C(Raw("content"))) + + got := r.Render(nil) + want := `
content
` + if got != want { + t.Fatalf("responsive.Render(nil) = %q, want %q", got, want) + } +}