diff options
author | Markus Wüstenberg | 2020-09-23 22:10:35 +0200 |
---|---|---|
committer | GitHub | 2020-09-23 22:10:35 +0200 |
commit | f27cb0c05f23785189979e57c831eb798e1da1f1 (patch) | |
tree | 902f20b3698d7470b4fa5769278319424463f88b | |
parent | 3de9270f785082b70e5d3cb7212271d7ad86a6d9 (diff) | |
download | gomponents-f27cb0c05f23785189979e57c831eb798e1da1f1.tar.lz gomponents-f27cb0c05f23785189979e57c831eb798e1da1f1.tar.zst gomponents-f27cb0c05f23785189979e57c831eb798e1da1f1.zip |
Add Textf function (#17)
Like Text, but calls fmt.Sprintf before rendering.
-rw-r--r-- | README.md | 2 | ||||
-rw-r--r-- | gomponents.go | 7 | ||||
-rw-r--r-- | gomponents_test.go | 7 |
3 files changed, 15 insertions, 1 deletions
diff --git a/README.md b/README.md index b817ad0..23b29b7 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ func Page(title, path string) g.Node { el.Body( Navbar(path), el.H1(title), - el.P(g.Text(fmt.Sprintf("Welcome to the page at %v.", path))), + el.P(g.Textf("Welcome to the page at %v.", path)), ), ), ) diff --git a/gomponents.go b/gomponents.go index d160b54..21d3e75 100644 --- a/gomponents.go +++ b/gomponents.go @@ -109,6 +109,13 @@ func Text(t string) NodeFunc { } } +// Textf creates a text DOM Node that Renders the interpolated and escaped string t. +func Textf(format string, a ...interface{}) NodeFunc { + return func() string { + return template.HTMLEscaper(fmt.Sprintf(format, a...)) + } +} + // Raw creates a raw Node that just Renders the unescaped string t. func Raw(t string) NodeFunc { return func() string { diff --git a/gomponents_test.go b/gomponents_test.go index 78b69f0..ee0b91d 100644 --- a/gomponents_test.go +++ b/gomponents_test.go @@ -81,6 +81,13 @@ func TestText(t *testing.T) { }) } +func TestTextf(t *testing.T) { + t.Run("renders interpolated and escaped text", func(t *testing.T) { + e := g.Textf("<%v/>", "div") + assert.Equal(t, "<div/>", e) + }) +} + func TestRaw(t *testing.T) { t.Run("renders raw text", func(t *testing.T) { e := g.Raw("<div/>") |