checkpoint: optionally wrap lines after converting HTML

This commit is contained in:
Dan Anglin 2024-07-07 21:18:40 +01:00
parent 5b31712974
commit f8300a1771
Signed by: dananglin
GPG key ID: 0C1D44CFBEE68638
3 changed files with 8 additions and 5 deletions

View file

@ -27,11 +27,11 @@ func (p Printer) PrintAccount(account model.Account, relationship *model.Account
builder.WriteString("\n" + p.fieldFormat("Statuses:")) builder.WriteString("\n" + p.fieldFormat("Statuses:"))
builder.WriteString(" " + strconv.Itoa(account.StatusCount)) builder.WriteString(" " + strconv.Itoa(account.StatusCount))
builder.WriteString("\n\n" + p.headerFormat("BIOGRAPHY:")) builder.WriteString("\n\n" + p.headerFormat("BIOGRAPHY:"))
builder.WriteString(p.wrapLines(convertHTMLToText(account.Note), 0)) builder.WriteString(p.convertHTMLToText(account.Note, true))
builder.WriteString("\n\n" + p.headerFormat("METADATA:")) builder.WriteString("\n\n" + p.headerFormat("METADATA:"))
for _, field := range account.Fields { for _, field := range account.Fields {
builder.WriteString("\n" + p.fieldFormat(field.Name) + ": " + convertHTMLToText(field.Value)) builder.WriteString("\n" + p.fieldFormat(field.Name) + ": " + p.convertHTMLToText(field.Value, false))
} }
builder.WriteString("\n\n" + p.headerFormat("ACCOUNT URL:")) builder.WriteString("\n\n" + p.headerFormat("ACCOUNT URL:"))

View file

@ -23,7 +23,7 @@ type htmlConvertState struct {
orderedListIndex int orderedListIndex int
} }
func convertHTMLToText(text string) string { func (p Printer) convertHTMLToText(text string, wrapLines bool) string {
var builder strings.Builder var builder strings.Builder
state := htmlConvertState{ state := htmlConvertState{
@ -37,6 +37,9 @@ func convertHTMLToText(text string) string {
tt := token.Next() tt := token.Next()
switch tt { switch tt {
case html.ErrorToken: case html.ErrorToken:
if wrapLines {
return p.wrapLines(builder.String(), 0)
}
return builder.String() return builder.String()
case html.TextToken: case html.TextToken:
text := token.Token().Data text := token.Token().Data

View file

@ -23,7 +23,7 @@ func (p Printer) PrintStatus(status model.Status) {
// The content of the status. // The content of the status.
builder.WriteString("\n\n" + p.headerFormat("CONTENT:")) builder.WriteString("\n\n" + p.headerFormat("CONTENT:"))
builder.WriteString(p.wrapLines(convertHTMLToText(status.Content), 0)) builder.WriteString(p.convertHTMLToText(status.Content, true))
// Details of media attachments (if any). // Details of media attachments (if any).
if len(status.MediaAttachments) > 0 { if len(status.MediaAttachments) > 0 {
@ -105,7 +105,7 @@ func (p Printer) PrintStatusList(list model.StatusList) {
mediaAttachments = status.Reblog.MediaAttachments mediaAttachments = status.Reblog.MediaAttachments
} }
builder.WriteString("\n" + p.wrapLines(convertHTMLToText(content), 0)) builder.WriteString("\n" + p.convertHTMLToText(content, true))
if poll != nil { if poll != nil {
builder.WriteString(p.pollOptions(*poll)) builder.WriteString(p.pollOptions(*poll))