about summary refs log tree commit diff stats
path: root/gomponents.go
Commit message (Collapse)AuthorAgeLines
* Add examples in test files (#80)Markus Wüstenberg2021-06-08-13/+1
| | | These show up in godoc.
* Escape Attr values (#77)Markus Wüstenberg2021-05-18-1/+1
| | | | | Because this can be a place of injection if untrusted data is passed, escape all attribute values. Fixes #74.
* Return Node from all helpers instead of NodeFunc (#62)Markus Wüstenberg2021-01-07-12/+12
| | | | | This makes it clearer that the helpers return a `Node` of any kind, and that the type is not important. This also streamlines the API, as attribute helpers already return just `Node`.
* Add If helper function (#57)Markus Wüstenberg2020-12-22-3/+16
| | | Used to inline conditional nodes.
* Minor refactoring and comment changes (#51)Markus Wüstenberg2020-12-08-10/+9
|
* Add NodeType which replaces the Placer interface (#45)Markus Wüstenberg2020-11-16-30/+23
| | | The `Placer` interface was a weird interface that tried to abstract away nodes being elements or attributes, but it doesn't really make sense. Now `Nodes` just have a `NodeType`.
* Render correct HTML5 (#44)Markus Wüstenberg2020-11-16-29/+37
| | | | | | | | | Previously, elements of kind void and empty elements generally would be rendered auto-closing (with a final `/` character in the start tag), which is allowed sometimes but arguably wrong. See https://dev.w3.org/html5/spec-LC/syntax.html#end-tags This created problems with for example `textarea` and `script`, which cannot be auto-closing, or the browser renders it wrong. Also clarified in the docs that this library outputs HTML5. Fixes #42.
* Add Map function (#40)Markus Wüstenberg2020-11-02-0/+17
| | | `Map` makes it easier to build lists of elements without having to iterate.
* Render to Writer instead of string (#39)Markus Wüstenberg2020-11-02-55/+88
| | | | | | | 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.)
* Remove fmt.Sprintf call in attribute Render (#38)Markus Wüstenberg2020-10-29-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Just concatenating the strings is much faster. Before: ``` make benchmark go test -bench=. goos: darwin goarch: amd64 pkg: github.com/maragudk/gomponents BenchmarkAttr/boolean_attributes-8 8194791 139 ns/op BenchmarkAttr/name-value_attributes-8 5143292 229 ns/op PASS ok github.com/maragudk/gomponents 2.841s ``` After: ``` make benchmark go test -bench=. goos: darwin goarch: amd64 pkg: github.com/maragudk/gomponents BenchmarkAttr/boolean_attributes-8 16755404 67.0 ns/op BenchmarkAttr/name-value_attributes-8 10208625 116 ns/op PASS ok github.com/maragudk/gomponents 2.702s ```
* Pass attributes as pointers (#37)Markus Wüstenberg2020-10-29-5/+5
|
* Don't render or error on nil children (#32)Markus Wüstenberg2020-10-23-0/+3
| | | This makes it easier to e.g. conditionally skip a component for rendering.
* Add Group function to group Nodes (#29)Markus Wüstenberg2020-10-22-11/+36
|
* Update package doc for gomponents (#28)Markus Wüstenberg2020-10-21-1/+1
|
* Use HTMLEscapeString in Textf (#27)Markus Wüstenberg2020-10-21-1/+1
|
* Use HTMLEscapeString (#24)Markus Wüstenberg2020-09-25-1/+1
| | | HTMLEscaper is not needed with strings.
* Add space before auto-closing element (#20)Markus Wüstenberg2020-09-24-2/+2
|
* Introduce Placer interface (#18)Markus Wüstenberg2020-09-24-8/+36
| | | | | When implemented, the `Place` method of the `Placer` interface tells `Render` in `El` where to put a Node. This is relevant for helpers that want to be rendered like attributes, inside the parent element. Fixes the bug where `attr.Classes` was rendered outside the element.
* Add Textf function (#17)Markus Wüstenberg2020-09-23-0/+7
| | | Like Text, but calls fmt.Sprintf before rendering.
* Add a Write function (#11)Markus Wüstenberg2020-09-21-0/+7
|
* Don't render twice with children (#9)Markus Wüstenberg2020-09-21-4/+3
|
* Make NodeFunc and attr implement fmt.Stringer (#6)Markus Wüstenberg2020-09-18-0/+10
|
* Add package documentation (#1)Markus Wüstenberg2020-09-14-0/+7
|
* Add first implementation of Node, El, Attr, TextMarkus Wüstenberg2020-09-13-0/+100