modulepackage
0.0.0-20201013000340-ee4748c638f4
Repository: https://github.com/yosssi/gohtml.git
Documentation: pkg.go.dev
# README
GoHTML - HTML formatter for Go
GoHTML is an HTML formatter for Go. You can format HTML source codes by using this package.
Install
go get -u github.com/yosssi/gohtml
Example
Example Go source code:
package main
import (
"fmt"
"github.com/yosssi/gohtml"
)
func main() {
h := `<!DOCTYPE html><html><head><title>This is a title.</title><script type="text/javascript">
alert('aaa');
if (0 < 1) {
alert('bbb');
}
</script><style type="text/css">
body {font-size: 14px;}
h1 {
font-size: 16px;
font-weight: bold;
}
</style></head><body><form><input type="name"><p>AAA<br>BBB></p></form><!-- This is a comment. --></body></html>`
fmt.Println(gohtml.Format(h))
}
Output:
<!DOCTYPE html>
<html>
<head>
<title>
This is a title.
</title>
<script type="text/javascript">
alert('aaa');
if (0 < 1) {
alert('bbb');
}
</script>
<style type="text/css">
body {font-size: 14px;}
h1 {
font-size: 16px;
font-weight: bold;
}
</style>
</head>
<body>
<form>
<input type="name">
<p>
AAA
<br>
BBB>
</p>
</form>
<!-- This is a comment. -->
</body>
</html>
Output Formatted HTML with Line No
You can output formatted HTML source codes with line no by calling FormatWithLineNo
:
package main
import (
"fmt"
"github.com/yosssi/gohtml"
)
func main() {
h := `<!DOCTYPE html><html><head><title>This is a title.</title><script type="text/javascript">
alert('aaa');
if (0 < 1) {
alert('bbb');
}
</script><style type="text/css">
body {font-size: 14px;}
h1 {
font-size: 16px;
font-weight: bold;
}
</style></head><body><form><input type="name"><p>AAA<br>BBB></p></form><!-- This is a comment. --></body></html>`
fmt.Println(gohtml.FormatWithLineNo(h))
}
Output:
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <title>
5 This is a title.
6 </title>
7 <script type="text/javascript">
8 alert('aaa');
9 if (0 < 1) {
10 alert('bbb');
11 }
12 </script>
13 <style type="text/css">
14 body {font-size: 14px;}
15 h1 {
16 font-size: 16px;
17 font-weight: bold;
18 }
19 </style>
20 </head>
21 <body>
22 <form>
23 <input type="name">
24 <p>
25 AAA
26 <br>
27 BBB>
28 </p>
29 </form>
30 <!-- This is a comment. -->
31 </body>
32 </html>
Format Go html/template Package's Template's Execute Result
You can format Go html/template package's template's execute result by passing Writer
to the tpl.Execute
:
package main
import (
"os"
"text/template"
"github.com/yosssi/gohtml"
)
func main() {
tpl, err := template.New("test").Parse("<html><head></head><body>{{.Msg}}</body></html>")
if err != nil {
panic(err)
}
data := map[string]interface{}{"Msg": "Hello!"}
err = tpl.Execute(gohtml.NewWriter(os.Stdout), data)
if err != nil {
panic(err)
}
}
Output:
<html>
<head>
</head>
<body>
Hello!
</body>
</html>
Docs
# Functions
Format parses the input HTML string, formats it and returns the result.
FormatBytes parses input HTML as bytes, formats it and returns the result.
Format parses the input HTML string, formats it and returns the result with line no.
NewWriter generates a Writer and returns it.
# Variables
Enable condensing a tag with only inline children onto a single line, or completely inlining it with sibling nodes.
Maximum length of an opening inline tag before it's un-inlined.
Tags that are considered inline tags.
Function that identifies which tags will be treated as containing preformatted content.
Column to wrap lines to (disabled by default).
Maxmimum characters a long word can extend past LineWrapColumn without wrapping.