package utilities
import (
"io"
"strconv"
"strings"
"golang.org/x/net/html"
)
const (
htmlNoList int = iota
htmlOrderedList
htmlUnorderedList
)
func ConvertHTMLToText(text string) string {
var builder strings.Builder
htmlList := htmlNoList
orderedListNumber := 1
token := html.NewTokenizer(strings.NewReader(text))
for {
tt := token.Next()
switch tt {
case html.ErrorToken:
return builder.String()
case html.TextToken:
text := token.Token().Data
builder.WriteString(text)
case html.StartTagToken, html.EndTagToken:
tag := token.Token().String()
htmlList, orderedListNumber = processTagToken(&builder, tag, htmlList, orderedListNumber)
}
}
}
func processTagToken(writer io.StringWriter, tag string, htmlList, orderedListNumber int) (int, int) {
switch tag {
case "
", "
", "
", "": _, _ = writer.WriteString("\n") case "