diff options
author | Markus Wüstenberg | 2020-09-25 09:57:47 +0200 |
---|---|---|
committer | GitHub | 2020-09-25 09:57:47 +0200 |
commit | 5da578cfdf717ff1465f729194c8192a00412881 (patch) | |
tree | 9bd1c59936f81efeb4d96edd40043301a97ed606 /el/document.go | |
parent | 77b64b13028d94a54491e606eed4dc759ec46dd2 (diff) | |
download | gomponents-5da578cfdf717ff1465f729194c8192a00412881.tar.lz gomponents-5da578cfdf717ff1465f729194c8192a00412881.tar.zst gomponents-5da578cfdf717ff1465f729194c8192a00412881.zip |
Group element helpers in different files (#21)
According to the section at https://developer.mozilla.org/en-US/docs/Web/HTML/Element
Diffstat (limited to 'el/document.go')
-rw-r--r-- | el/document.go | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/el/document.go b/el/document.go new file mode 100644 index 0000000..8520cd7 --- /dev/null +++ b/el/document.go @@ -0,0 +1,69 @@ +// Package el provides shortcuts and helpers to common HTML elements. +// See https://developer.mozilla.org/en-US/docs/Web/HTML/Element for a list of elements. +package el + +import ( + "strings" + + g "github.com/maragudk/gomponents" +) + +// Document returns an special kind of Node that prefixes its children with the string "<!doctype html>". +func Document(children ...g.Node) g.NodeFunc { + return func() string { + var b strings.Builder + b.WriteString("<!doctype html>") + for _, c := range children { + b.WriteString(c.Render()) + } + return b.String() + } +} + +// HTML returns an element with name "html" and the given children. +func HTML(children ...g.Node) g.NodeFunc { + return g.El("html", children...) +} + +// Head returns an element with name "head" and the given children. +func Head(children ...g.Node) g.NodeFunc { + return g.El("head", children...) +} + +// Body returns an element with name "body" and the given children. +func Body(children ...g.Node) g.NodeFunc { + return g.El("body", children...) +} + +// Title returns an element with name "title" and a single Text child. +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 Base(children ...g.Node) g.NodeFunc { + return g.El("base", children...) +} + +func prepend(node g.Node, nodes []g.Node) []g.Node { + newNodes := []g.Node{node} + newNodes = append(newNodes, nodes...) + return newNodes +} + +func prepend2(node1, node2 g.Node, nodes []g.Node) []g.Node { + newNodes := []g.Node{node1, node2} + newNodes = append(newNodes, nodes...) + return newNodes +} |