From 64ecc9049932273d04b412f4fb5c49d8083065f5 Mon Sep 17 00:00:00 2001 From: Dan Anglin Date: Tue, 4 Jun 2024 20:29:19 +0100 Subject: [PATCH] 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. --- internal/model/account.go | 11 +++-------- internal/model/instance_v2.go | 4 ++-- internal/model/list.go | 6 +----- internal/model/status.go | 8 ++++---- internal/utilities/format.go | 13 ++++++++++--- 5 files changed, 20 insertions(+), 22 deletions(-) diff --git a/internal/model/account.go b/internal/model/account.go index 2e5dc2a..53fa953 100644 --- a/internal/model/account.go +++ b/internal/model/account.go @@ -65,7 +65,7 @@ type Field struct { func (a Account) Display(noColor bool) string { format := ` -%s (@%s) +%s %s %s @@ -98,8 +98,7 @@ func (a Account) Display(noColor bool) string { return fmt.Sprintf( format, - utilities.DisplayNameFormat(noColor, a.DisplayName), - a.Username, + utilities.FullDisplayNameFormat(noColor, a.DisplayName, a.Acct), utilities.HeaderFormat(noColor, "ACCOUNT ID:"), a.ID, utilities.HeaderFormat(noColor, "JOINED ON:"), @@ -218,11 +217,7 @@ func (a AccountList) Display(noColor bool) string { } } else { for i := range a.Accounts { - output += fmt.Sprintf( - "\n • %s (%s)", - utilities.DisplayNameFormat(noColor, a.Accounts[i].DisplayName), - a.Accounts[i].Acct, - ) + output += "\n • " + utilities.FullDisplayNameFormat(noColor, a.Accounts[i].DisplayName, a.Accounts[i].Acct) } } diff --git a/internal/model/instance_v2.go b/internal/model/instance_v2.go index cd654f7..015ee13 100644 --- a/internal/model/instance_v2.go +++ b/internal/model/instance_v2.go @@ -154,9 +154,9 @@ func (i InstanceV2) Display(noColor bool) string { i.Version, utilities.HeaderFormat(noColor, "CONTACT:"), utilities.FieldFormat(noColor, "Name:"), - utilities.DisplayNameFormat(noColor, i.Contact.Account.DisplayName), + i.Contact.Account.DisplayName, utilities.FieldFormat(noColor, "Username:"), - i.Contact.Account.Username, + i.Contact.Account.Acct, utilities.FieldFormat(noColor, "Email:"), i.Contact.Email, ) diff --git a/internal/model/list.go b/internal/model/list.go index 6fb2ed6..665d25a 100644 --- a/internal/model/list.go +++ b/internal/model/list.go @@ -131,11 +131,7 @@ func (l List) Display(noColor bool) string { if len(l.Accounts) > 0 { for acct, name := range l.Accounts { - output += fmt.Sprintf( - "\n • %s (%s)", - utilities.DisplayNameFormat(noColor, name), - acct, - ) + output += "\n • " + utilities.FullDisplayNameFormat(noColor, name, acct) } } else { output += "\n None" diff --git a/internal/model/status.go b/internal/model/status.go index 486e0e5..a534215 100644 --- a/internal/model/status.go +++ b/internal/model/status.go @@ -159,7 +159,7 @@ type MediaDimensions struct { func (s Status) Display(noColor bool) string { format := ` -%s (@%s) +%s %s %s @@ -183,7 +183,7 @@ func (s Status) Display(noColor bool) string { return fmt.Sprintf( format, - utilities.DisplayNameFormat(noColor, s.Account.DisplayName), s.Account.Username, + utilities.FullDisplayNameFormat(noColor, s.Account.DisplayName, s.Account.Acct), utilities.HeaderFormat(noColor, "CONTENT:"), utilities.WrapLines(utilities.ConvertHTMLToText(s.Content), "\n ", 80), utilities.HeaderFormat(noColor, "STATUS ID:"), @@ -214,13 +214,13 @@ func (s StatusList) Display(noColor bool) string { builder.WriteString(utilities.HeaderFormat(noColor, s.Name) + "\n") 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 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") + builder.WriteString("reposted this status from " + utilities.FullDisplayNameFormat(noColor, status.Reblog.Account.DisplayName, status.Reblog.Account.Acct) + "\n") statusID = status.Reblog.ID createdAt = status.Reblog.CreatedAt } diff --git a/internal/utilities/format.go b/internal/utilities/format.go index b756e28..c64ab7f 100644 --- a/internal/utilities/format.go +++ b/internal/utilities/format.go @@ -6,6 +6,7 @@ package utilities import ( "regexp" + "strings" "time" ) @@ -32,15 +33,21 @@ func FieldFormat(noColor bool, text string) string { 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 pattern := regexp.MustCompile(`\s:[A-Za-z0-9]*:`) + var builder strings.Builder + 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 {