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)
+ }
+}