From 8de5a685efbc6f13e606dcd70d15b757e3f9ad9a Mon Sep 17 00:00:00 2001 From: Markus Wüstenberg Date: Mon, 21 Sep 2020 11:23:47 +0200 Subject: Add a lot of common elements (#10) Especially add elements that are either used in every document, that nearly always have text content, or that are almost always used with certain attributes.--- el/elements.go | 90 +++++++++++++++++++++++++++++++++++++ el/elements_test.go | 126 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 216 insertions(+) (limited to 'el') diff --git a/el/elements.go b/el/elements.go index ecff7e8..a0ea3d5 100644 --- a/el/elements.go +++ b/el/elements.go @@ -39,3 +39,93 @@ func Body(children ...g.Node) g.NodeFunc { func Title(title string) g.NodeFunc { return g.El("title", g.Text(title)) } + +func Meta(children ...g.Node) g.NodeFunc { + return g.El("meta", children...) +} + +func Link(children ...g.Node) g.NodeFunc { + return g.El("link", children...) +} + +func Style(children ...g.Node) g.NodeFunc { + return g.El("style", children...) +} + +func Div(children ...g.Node) g.NodeFunc { + return g.El("div", children...) +} + +func Span(children ...g.Node) g.NodeFunc { + return g.El("span", children...) +} + +func A(href string, children ...g.Node) g.NodeFunc { + return g.El("a", prepend(g.Attr("href", href), children)...) +} + +func P(children ...g.Node) g.NodeFunc { + return g.El("p", children...) +} + +func H1(text string) g.NodeFunc { + return g.El("h1", g.Text(text)) +} + +func H2(text string) g.NodeFunc { + return g.El("h2", g.Text(text)) +} + +func H3(text string) g.NodeFunc { + return g.El("h3", g.Text(text)) +} + +func H4(text string) g.NodeFunc { + return g.El("h4", g.Text(text)) +} + +func H5(text string) g.NodeFunc { + return g.El("h5", g.Text(text)) +} + +func H6(text string) g.NodeFunc { + return g.El("h6", g.Text(text)) +} + +func Ol(children ...g.Node) g.NodeFunc { + return g.El("ol", children...) +} + +func Ul(children ...g.Node) g.NodeFunc { + return g.El("ul", children...) +} + +func Li(children ...g.Node) g.NodeFunc { + return g.El("li", children...) +} + +func B(text string) g.NodeFunc { + return g.El("b", g.Text(text)) +} + +func Strong(text string) g.NodeFunc { + return g.El("strong", g.Text(text)) +} + +func I(text string) g.NodeFunc { + return g.El("i", g.Text(text)) +} + +func Em(text string) g.NodeFunc { + return g.El("em", g.Text(text)) +} + +func Img(src, alt string) g.NodeFunc { + return g.El("img", g.Attr("src", src), g.Attr("alt", alt)) +} + +func prepend(node g.Node, nodes []g.Node) []g.Node { + newNodes := []g.Node{node} + newNodes = append(newNodes, nodes...) + return newNodes +} diff --git a/el/elements_test.go b/el/elements_test.go index eb0db47..0eee5f3 100644 --- a/el/elements_test.go +++ b/el/elements_test.go @@ -37,3 +37,129 @@ func TestTitle(t *testing.T) { assert.Equal(t, "hat", el.Title("hat")) }) } + +func TestMeta(t *testing.T) { + t.Run("returns a meta element", func(t *testing.T) { + assert.Equal(t, ``, el.Meta(g.Attr("charset", "utf-8"))) + }) +} + +func TestLink(t *testing.T) { + t.Run("returns a link element", func(t *testing.T) { + assert.Equal(t, ``, el.Link(g.Attr("rel", "stylesheet"))) + }) +} + +func TestStyle(t *testing.T) { + t.Run("returns a style element", func(t *testing.T) { + assert.Equal(t, `