38 lines
899 B
Go
38 lines
899 B
Go
|
package gohtml
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"strconv"
|
||
|
"strings"
|
||
|
)
|
||
|
|
||
|
// Format parses the input HTML string, formats it and returns the result.
|
||
|
func Format(s string) string {
|
||
|
return parse(strings.NewReader(s)).html()
|
||
|
}
|
||
|
|
||
|
// FormatBytes parses input HTML as bytes, formats it and returns the result.
|
||
|
func FormatBytes(b []byte) []byte {
|
||
|
return parse(bytes.NewReader(b)).bytes()
|
||
|
}
|
||
|
|
||
|
// Format parses the input HTML string, formats it and returns the result with line no.
|
||
|
func FormatWithLineNo(s string) string {
|
||
|
return AddLineNo(Format(s))
|
||
|
}
|
||
|
|
||
|
func AddLineNo(s string) string {
|
||
|
lines := strings.Split(s, "\n")
|
||
|
maxLineNoStrLen := len(strconv.Itoa(len(lines)))
|
||
|
bf := &bytes.Buffer{}
|
||
|
for i, line := range lines {
|
||
|
lineNoStr := strconv.Itoa(i + 1)
|
||
|
if i > 0 {
|
||
|
bf.WriteString("\n")
|
||
|
}
|
||
|
bf.WriteString(strings.Repeat(" ", maxLineNoStrLen-len(lineNoStr)) + lineNoStr + " " + line)
|
||
|
}
|
||
|
return bf.String()
|
||
|
|
||
|
}
|