Repository: maragudk/gomponents (go)

Issue:
Implement remaining section elements as helpers
https://developer.mozilla.org/en-US/docs/Web/HTML/Element#Content_sectioning

- address
- article
- aside
- footer
- header
- hgroup
- main
- nav
- section

Pull request description:
Add remaining sectioning elements as helpers
Fixes #22.

Patch:
diff --git a/el/section.go b/el/section.go
index 53e9890..3c31ebc 100644
--- a/el/section.go
+++ b/el/section.go
@@ -4,26 +4,77 @@ import (
 	g "github.com/maragudk/gomponents"
 )
 
+// Address returns an element with name "address" and the given children.
+func Address(children ...g.Node) g.NodeFunc {
+	return g.El("address", children...)
+}
+
+// Article returns an element with name "article" and the given children.
+func Article(children ...g.Node) g.NodeFunc {
+	return g.El("article", children...)
+}
+
+// Aside returns an element with name "aside" and the given children.
+func Aside(children ...g.Node) g.NodeFunc {
+	return g.El("aside", children...)
+}
+
+// Footer returns an element with name "footer" and the given children.
+func Footer(children ...g.Node) g.NodeFunc {
+	return g.El("footer", children...)
+}
+
+// Header returns an element with name "header" and the given children.
+func Header(children ...g.Node) g.NodeFunc {
+	return g.El("header", children...)
+}
+
+// H1 returns an element with name "h1", the given text content, and the given children.
 func H1(text string, children ...g.Node) g.NodeFunc {
 	return g.El("h1", prepend(g.Text(text), children)...)
 }
 
+// H2 returns an element with name "h2", the given text content, and the given children.
 func H2(text string, children ...g.Node) g.NodeFunc {
 	return g.El("h2", prepend(g.Text(text), children)...)
 }
 
+// H3 returns an element with name "h3", the given text content, and the given children.
 func H3(text string, children ...g.Node) g.NodeFunc {
 	return g.El("h3", prepend(g.Text(text), children)...)
 }
 
+// H4 returns an element with name "h4", the given text content, and the given children.
 func H4(text string, children ...g.Node) g.NodeFunc {
 	return g.El("h4", prepend(g.Text(text), children)...)
 }
 
+// H5 returns an element with name "h5", the given text content, and the given children.
 func H5(text string, children ...g.Node) g.NodeFunc {
 	return g.El("h5", prepend(g.Text(text), children)...)
 }
 
+// H6 returns an element with name "h6", the given text content, and the given children.
 func H6(text string, children ...g.Node) g.NodeFunc {
 	return g.El("h6", prepend(g.Text(text), children)...)
 }
+
+// HGroup returns an element with name "hgroup" and the given children.
+func HGroup(children ...g.Node) g.NodeFunc {
+	return g.El("hgroup", children...)
+}
+
+// Main returns an element with name "main" and the given children.
+func Main(children ...g.Node) g.NodeFunc {
+	return g.El("main", children...)
+}
+
+// Nav returns an element with name "nav" and the given children.
+func Nav(children ...g.Node) g.NodeFunc {
+	return g.El("nav", children...)
+}
+
+// Section returns an element with name "section" and the given children.
+func Section(children ...g.Node) g.NodeFunc {
+	return g.El("section", children...)
+}


Test patch:
diff --git a/el/section_test.go b/el/section_test.go
index 5147e04..11c60fb 100644
--- a/el/section_test.go
+++ b/el/section_test.go
@@ -8,6 +8,36 @@ import (
 	"github.com/maragudk/gomponents/el"
 )
 
+func TestAddress(t *testing.T) {
+	t.Run("returns an address element", func(t *testing.T) {
+		assert.Equal(t, `<address />`, el.Address())
+	})
+}
+
+func TestArticle(t *testing.T) {
+	t.Run("returns an article element", func(t *testing.T) {
+		assert.Equal(t, `<article />`, el.Article())
+	})
+}
+
+func TestAside(t *testing.T) {
+	t.Run("returns an aside element", func(t *testing.T) {
+		assert.Equal(t, `<aside />`, el.Aside())
+	})
+}
+
+func TestFooter(t *testing.T) {
+	t.Run("returns a footer element", func(t *testing.T) {
+		assert.Equal(t, `<footer />`, el.Footer())
+	})
+}
+
+func TestHeader(t *testing.T) {
+	t.Run("returns a header element", func(t *testing.T) {
+		assert.Equal(t, `<header />`, el.Header())
+	})
+}
+
 func TestH1(t *testing.T) {
 	t.Run("returns an h1 element", func(t *testing.T) {
 		assert.Equal(t, `<h1 id="headline">hat</h1>`, el.H1("hat", g.Attr("id", "headline")))
@@ -43,3 +73,27 @@ func TestH6(t *testing.T) {
 		assert.Equal(t, `<h6 id="headline">hat</h6>`, el.H6("hat", g.Attr("id", "headline")))
 	})
 }
+
+func TestHGroup(t *testing.T) {
+	t.Run("returns an hgroup element", func(t *testing.T) {
+		assert.Equal(t, `<hgroup />`, el.HGroup())
+	})
+}
+
+func TestMainEl(t *testing.T) {
+	t.Run("returns a main element", func(t *testing.T) {
+		assert.Equal(t, `<main />`, el.Main())
+	})
+}
+
+func TestNav(t *testing.T) {
+	t.Run("returns a nav element", func(t *testing.T) {
+		assert.Equal(t, `<nav />`, el.Nav())
+	})
+}
+
+func TestSection(t *testing.T) {
+	t.Run("returns a section element", func(t *testing.T) {
+		assert.Equal(t, `<section />`, el.Section())
+	})
+}