refactor: add FullDisplayNameFormat

Add the FullDisplayNameFormat as a replacement for DisplayNameFormat for
displaying the full display name. It uses the builder from the strings
package to reduce the use of fmt.Sprintf.
This commit is contained in:
Dan Anglin 2024-06-04 20:29:19 +01:00
parent d452122b58
commit 64ecc90499
Signed by: dananglin
GPG key ID: 0C1D44CFBEE68638
5 changed files with 20 additions and 22 deletions

View file

@ -65,7 +65,7 @@ type Field struct {
func (a Account) Display(noColor bool) string { func (a Account) Display(noColor bool) string {
format := ` format := `
%s (@%s) %s
%s %s
%s %s
@ -98,8 +98,7 @@ func (a Account) Display(noColor bool) string {
return fmt.Sprintf( return fmt.Sprintf(
format, format,
utilities.DisplayNameFormat(noColor, a.DisplayName), utilities.FullDisplayNameFormat(noColor, a.DisplayName, a.Acct),
a.Username,
utilities.HeaderFormat(noColor, "ACCOUNT ID:"), utilities.HeaderFormat(noColor, "ACCOUNT ID:"),
a.ID, a.ID,
utilities.HeaderFormat(noColor, "JOINED ON:"), utilities.HeaderFormat(noColor, "JOINED ON:"),
@ -218,11 +217,7 @@ func (a AccountList) Display(noColor bool) string {
} }
} else { } else {
for i := range a.Accounts { for i := range a.Accounts {
output += fmt.Sprintf( output += "\n • " + utilities.FullDisplayNameFormat(noColor, a.Accounts[i].DisplayName, a.Accounts[i].Acct)
"\n • %s (%s)",
utilities.DisplayNameFormat(noColor, a.Accounts[i].DisplayName),
a.Accounts[i].Acct,
)
} }
} }

View file

@ -154,9 +154,9 @@ func (i InstanceV2) Display(noColor bool) string {
i.Version, i.Version,
utilities.HeaderFormat(noColor, "CONTACT:"), utilities.HeaderFormat(noColor, "CONTACT:"),
utilities.FieldFormat(noColor, "Name:"), utilities.FieldFormat(noColor, "Name:"),
utilities.DisplayNameFormat(noColor, i.Contact.Account.DisplayName), i.Contact.Account.DisplayName,
utilities.FieldFormat(noColor, "Username:"), utilities.FieldFormat(noColor, "Username:"),
i.Contact.Account.Username, i.Contact.Account.Acct,
utilities.FieldFormat(noColor, "Email:"), utilities.FieldFormat(noColor, "Email:"),
i.Contact.Email, i.Contact.Email,
) )

View file

@ -131,11 +131,7 @@ func (l List) Display(noColor bool) string {
if len(l.Accounts) > 0 { if len(l.Accounts) > 0 {
for acct, name := range l.Accounts { for acct, name := range l.Accounts {
output += fmt.Sprintf( output += "\n • " + utilities.FullDisplayNameFormat(noColor, name, acct)
"\n • %s (%s)",
utilities.DisplayNameFormat(noColor, name),
acct,
)
} }
} else { } else {
output += "\n None" output += "\n None"

View file

@ -159,7 +159,7 @@ type MediaDimensions struct {
func (s Status) Display(noColor bool) string { func (s Status) Display(noColor bool) string {
format := ` format := `
%s (@%s) %s
%s %s
%s %s
@ -183,7 +183,7 @@ func (s Status) Display(noColor bool) string {
return fmt.Sprintf( return fmt.Sprintf(
format, format,
utilities.DisplayNameFormat(noColor, s.Account.DisplayName), s.Account.Username, utilities.FullDisplayNameFormat(noColor, s.Account.DisplayName, s.Account.Acct),
utilities.HeaderFormat(noColor, "CONTENT:"), utilities.HeaderFormat(noColor, "CONTENT:"),
utilities.WrapLines(utilities.ConvertHTMLToText(s.Content), "\n ", 80), utilities.WrapLines(utilities.ConvertHTMLToText(s.Content), "\n ", 80),
utilities.HeaderFormat(noColor, "STATUS ID:"), utilities.HeaderFormat(noColor, "STATUS ID:"),
@ -214,13 +214,13 @@ func (s StatusList) Display(noColor bool) string {
builder.WriteString(utilities.HeaderFormat(noColor, s.Name) + "\n") builder.WriteString(utilities.HeaderFormat(noColor, s.Name) + "\n")
for _, status := range s.Statuses { for _, status := range s.Statuses {
builder.WriteString("\n" + utilities.DisplayNameFormat(noColor, status.Account.DisplayName) + " (@" + status.Account.Acct + ")\n") builder.WriteString("\n" + utilities.FullDisplayNameFormat(noColor, status.Account.DisplayName, status.Account.Acct) + "\n")
statusID := status.ID statusID := status.ID
createdAt := status.CreatedAt createdAt := status.CreatedAt
if status.Reblog != nil { if status.Reblog != nil {
builder.WriteString("reposted this status from " + utilities.DisplayNameFormat(noColor, status.Reblog.Account.DisplayName) + " (@" + status.Reblog.Account.Acct + ")\n") builder.WriteString("reposted this status from " + utilities.FullDisplayNameFormat(noColor, status.Reblog.Account.DisplayName, status.Reblog.Account.Acct) + "\n")
statusID = status.Reblog.ID statusID = status.Reblog.ID
createdAt = status.Reblog.CreatedAt createdAt = status.Reblog.CreatedAt
} }

View file

@ -6,6 +6,7 @@ package utilities
import ( import (
"regexp" "regexp"
"strings"
"time" "time"
) )
@ -32,15 +33,21 @@ func FieldFormat(noColor bool, text string) string {
return green + text + reset return green + text + reset
} }
func DisplayNameFormat(noColor bool, text string) string { func FullDisplayNameFormat(noColor bool, displayName, acct string) string {
// use this pattern to remove all emoji strings // use this pattern to remove all emoji strings
pattern := regexp.MustCompile(`\s:[A-Za-z0-9]*:`) pattern := regexp.MustCompile(`\s:[A-Za-z0-9]*:`)
var builder strings.Builder
if noColor { if noColor {
return pattern.ReplaceAllString(text, "") builder.WriteString(pattern.ReplaceAllString(displayName, ""))
} else {
builder.WriteString(boldmagenta + pattern.ReplaceAllString(displayName, "") + reset)
} }
return boldmagenta + pattern.ReplaceAllString(text, "") + reset builder.WriteString(" (@" + acct + ")")
return builder.String()
} }
func FormatDate(date time.Time) string { func FormatDate(date time.Time) string {