Dan Anglin
6a799ff5ac
Updated the ConvertHTMLToText function to properly parse and convert both ordered and unordered lists to plain text.
39 lines
1.4 KiB
Go
39 lines
1.4 KiB
Go
package model
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"codeflow.dananglin.me.uk/apollo/enbas/internal/utilities"
|
|
)
|
|
|
|
type Timeline struct {
|
|
Name string
|
|
Statuses []Status
|
|
}
|
|
|
|
func (t Timeline) Display(noColor bool) string {
|
|
var builder strings.Builder
|
|
|
|
separator := "────────────────────────────────────────────────────────────────────────────────"
|
|
|
|
builder.WriteString(utilities.HeaderFormat(noColor, t.Name) + "\n")
|
|
|
|
for _, status := range t.Statuses {
|
|
builder.WriteString("\n" + utilities.DisplayNameFormat(noColor, status.Account.DisplayName) + " (@" + status.Account.Acct + ")\n")
|
|
|
|
statusID := status.ID
|
|
createdAt := status.CreatedAt
|
|
|
|
if status.Reblog != nil {
|
|
builder.WriteString("reposted this status from " + utilities.DisplayNameFormat(noColor, status.Reblog.Account.DisplayName) + " (@" + status.Reblog.Account.Acct + ")\n")
|
|
statusID = status.Reblog.ID
|
|
createdAt = status.Reblog.CreatedAt
|
|
}
|
|
|
|
builder.WriteString(utilities.WrapLines(utilities.ConvertHTMLToText(status.Content), "\n", 80) + "\n\n")
|
|
builder.WriteString(utilities.FieldFormat(noColor, "ID:") + " " + statusID + "\t" + utilities.FieldFormat(noColor, "Created at:") + " " + utilities.FormatTime(createdAt) + "\n")
|
|
builder.WriteString(separator + "\n")
|
|
}
|
|
|
|
return builder.String()
|
|
}
|