package utilities import ( "io" "strings" "golang.org/x/net/html" ) func ConvertHTMLToText(text string) string { var builder strings.Builder var unorderedList bool 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() unorderedList = processTag(&builder, tag, unorderedList) } } } func processTag(writer io.StringWriter, tag string, unorderedList bool) bool { switch tag { case "
", "

", "

", "": _, _ = writer.WriteString("\n") case "": unorderedList = false case "
  • ": if unorderedList { _, _ = writer.WriteString("• ") } } return unorderedList }