Added RawText type

This commit is contained in:
Brandon Dyck 2019-05-27 22:34:01 -06:00
parent f80148fdf6
commit ae85431082
3 changed files with 27 additions and 2 deletions

View File

@ -1,6 +1,10 @@
# Changelog # Changelog
## Unversioned ## [0.0.4] - 2019-05-27
### Added
- `hatmill.RawText` type for unescaped text nodes
### Changed ### Changed

View File

@ -165,7 +165,21 @@ func (t Text) WriteTo(w io.Writer) (n int64, err error) {
return return
} }
// WriteDocument writes an HTML5 doctype declaration, followed by root. // RawText represents an HTML text node. Unlike Text, its contents are not
// escaped when written, so it should be used with care. It is intended mainly
// for use in <style> and <script> elements.
type RawText string
func (RawText) isHtml() {}
// WriteTo writes the contents of t to w, returning the number of bytes written
// and any error encountered. It does not escape special characters.
func (t RawText) WriteTo(w io.Writer) (n int64, err error) {
err = writeStringsTo(w, &n, string(t))
return
}
// WriteDocument writes an HTML5 DOCTYPE declaration, followed by root.
// root should probably be an <html> element. // root should probably be an <html> element.
func WriteDocument(w io.Writer, root ParentElement) (n int64, err error) { func WriteDocument(w io.Writer, root ParentElement) (n int64, err error) {
err = writeStringsTo(w, &n, "<!DOCTYPE html>") err = writeStringsTo(w, &n, "<!DOCTYPE html>")

View File

@ -231,6 +231,13 @@ func TestTerms(t *testing.T) {
)) ))
} }
func ExampleRawText() {
he.Style()(
hatmill.RawText(`div > p::before {content: "Words & stuff: ";}`),
).WriteTo(os.Stdout)
// Output: <style>div > p::before {content: "Words & stuff: ";}</style>
}
func Example() { func Example() {
userInput := "<script>launchMissiles();</script>" userInput := "<script>launchMissiles();</script>"