about summary refs log tree commit diff stats
path: root/attr/attributes.go
diff options
context:
space:
mode:
authorMarkus Wüstenberg2020-11-02 10:03:05 +0100
committerGitHub2020-11-02 10:03:05 +0100
commit6c8f0c235287edf7252fe239d4c9beb258c6ff01 (patch)
treeae1245a8e1491f5f369e8d9ef2517148d9774130 /attr/attributes.go
parent92ba5904c1645e6572f5ff1b9d0e0ec629e1afb9 (diff)
downloadgomponents-6c8f0c235287edf7252fe239d4c9beb258c6ff01.tar.lz
gomponents-6c8f0c235287edf7252fe239d4c9beb258c6ff01.tar.zst
gomponents-6c8f0c235287edf7252fe239d4c9beb258c6ff01.zip
Render to Writer instead of string (#39)
The Render function has been changed to take a `Writer` instead of returning a string. This makes it possible to generate documents without having the whole content in memory.

This also removes the `gomponents.Write` function, which is now redundant.

Furthermore, the `el.Document` function has been changed to only take one child, as multiple children never make sense for it. (It's not even a child, more a sibling.)
Diffstat (limited to 'attr/attributes.go')
-rw-r--r--attr/attributes.go9
1 files changed, 6 insertions, 3 deletions
diff --git a/attr/attributes.go b/attr/attributes.go
index 2b25681..bc157cb 100644
--- a/attr/attributes.go
+++ b/attr/attributes.go
@@ -3,6 +3,7 @@
 package attr
 
 import (
+	"io"
 	"sort"
 	"strings"
 
@@ -14,7 +15,7 @@ import (
 // for which the corresponding map value is true.
 type Classes map[string]bool
 
-func (c Classes) Render() string {
+func (c Classes) Render(w io.Writer) error {
 	var included []string
 	for c, include := range c {
 		if include {
@@ -22,7 +23,7 @@ func (c Classes) Render() string {
 		}
 	}
 	sort.Strings(included)
-	return g.Attr("class", strings.Join(included, " ")).Render()
+	return g.Attr("class", strings.Join(included, " ")).Render(w)
 }
 
 func (c Classes) Place() g.Placement {
@@ -31,5 +32,7 @@ func (c Classes) Place() g.Placement {
 
 // String satisfies fmt.Stringer.
 func (c Classes) String() string {
-	return c.Render()
+	var b strings.Builder
+	_ = c.Render(&b)
+	return b.String()
 }