From ace58950b3b2f8534e993304245385ed68c1c644 Mon Sep 17 00:00:00 2001 From: ayn2op Date: Mon, 26 May 2025 14:06:48 -0400 Subject: [PATCH] refactor: gofmt --- cmd/guilds_tree.go | 18 +-- internal/config/theme.go | 2 +- internal/markdown/renderer.go | 208 ++++++++++++++++++++-------------- 3 files changed, 130 insertions(+), 98 deletions(-) diff --git a/cmd/guilds_tree.go b/cmd/guilds_tree.go index d3f8180..37ec9df 100644 --- a/cmd/guilds_tree.go +++ b/cmd/guilds_tree.go @@ -211,15 +211,15 @@ func (gt *GuildsTree) onSelected(n *tview.TreeNode) { return } - sort.Slice(cs, func(a, b int) bool { - msgID := func(ch discord.Channel) discord.MessageID { - if ch.LastMessageID.IsValid() { - return ch.LastMessageID - } - return discord.MessageID(ch.ID) - } - return msgID(cs[a]) > msgID(cs[b]) - }) + sort.Slice(cs, func(a, b int) bool { + msgID := func(ch discord.Channel) discord.MessageID { + if ch.LastMessageID.IsValid() { + return ch.LastMessageID + } + return discord.MessageID(ch.ID) + } + return msgID(cs[a]) > msgID(cs[b]) + }) for _, c := range cs { gt.createChannelNode(n, c) diff --git a/internal/config/theme.go b/internal/config/theme.go index 0c6f073..34e8619 100644 --- a/internal/config/theme.go +++ b/internal/config/theme.go @@ -58,7 +58,7 @@ type ( ShowNicknames bool `toml:"show_user_nicks"` ShowUsernameColors bool `toml:"show_user_colors"` - ReplyIndicator string `toml:"reply_indicator"` + ReplyIndicator string `toml:"reply_indicator"` ForwardedIndicator string `toml:"forwarded_indicator"` AuthorColor string `toml:"author_color"` diff --git a/internal/markdown/renderer.go b/internal/markdown/renderer.go index 781e3e1..83f5088 100644 --- a/internal/markdown/renderer.go +++ b/internal/markdown/renderer.go @@ -33,101 +33,133 @@ func (r *renderer) Render(w io.Writer, source []byte, n ast.Node) error { case *ast.Document: // noop case *ast.Heading: - io.WriteString(w, "\n") - case *ast.FencedCodeBlock: - io.WriteString(w, "\n") - - if entering { - // body - for i := range n.Lines().Len() { - line := n.Lines().At(i) - io.WriteString(w, "| ") - w.Write(line.Value(source)) - } - } - case *ast.AutoLink: - if entering { - linkColor := r.config.Options["linkColor"].(string) - io.WriteString(w, "["+linkColor+"]") - w.Write(n.URL(source)) - } else { - io.WriteString(w, "[-::]") - } - case *ast.Link: - if entering { - linkColor := r.config.Options["linkColor"].(string) - io.WriteString(w, fmt.Sprintf("[%s:::%s]", linkColor, n.Destination)) - } else { - io.WriteString(w, "[-:::-]") - } + r.renderHeading(w) case *ast.Text: - if entering { - w.Write(n.Segment.Value(source)) - switch { - case n.HardLineBreak(): - io.WriteString(w, "\n\n") - case n.SoftLineBreak(): - io.WriteString(w, "\n") - } - } + r.renderText(w, n, entering, source) + case *ast.FencedCodeBlock: + r.renderFencedCodeBlock(w, n, entering, source) + case *ast.AutoLink: + r.renderAutoLink(w, n, entering, source) + case *ast.Link: + r.renderLink(w, n, entering) case *discordmd.Inline: - if entering { - switch n.Attr { - case discordmd.AttrBold: - io.WriteString(w, "[::b]") - case discordmd.AttrItalics: - io.WriteString(w, "[::i]") - case discordmd.AttrUnderline: - io.WriteString(w, "[::u]") - case discordmd.AttrStrikethrough: - io.WriteString(w, "[::s]") - case discordmd.AttrMonospace: - io.WriteString(w, "[::r]") - } - } else { - switch n.Attr { - case discordmd.AttrBold: - io.WriteString(w, "[::B]") - case discordmd.AttrItalics: - io.WriteString(w, "[::I]") - case discordmd.AttrUnderline: - io.WriteString(w, "[::U]") - case discordmd.AttrStrikethrough: - io.WriteString(w, "[::S]") - case discordmd.AttrMonospace: - io.WriteString(w, "[::R]") - } - } + r.renderInline(w, n, entering) case *discordmd.Mention: - if entering { - io.WriteString(w, "[::b]") - - switch { - case n.Channel != nil: - io.WriteString(w, "#"+n.Channel.Name) - case n.GuildUser != nil: - username := n.GuildUser.DisplayOrUsername() - if r.config.Options["showNicknames"].(bool) && n.GuildUser.Member != nil && n.GuildUser.Member.Nick != "" { - username = n.GuildUser.Member.Nick - } - io.WriteString(w, "@"+username) - case n.GuildRole != nil: - io.WriteString(w, "@"+n.GuildRole.Name) - } - } else { - io.WriteString(w, "[::B]") - } + r.renderMention(w, n, entering) case *discordmd.Emoji: - if entering { - emojiColor := r.config.Options["emojiColor"].(string) - io.WriteString(w, "["+emojiColor+"]") - io.WriteString(w, ":"+n.Name+":") - } else { - io.WriteString(w, "[-]") - } + r.renderEmoji(w, n, entering) } return ast.WalkContinue, nil }) } + +func (r *renderer) renderHeading(w io.Writer) { + io.WriteString(w, "\n") +} + +func (r *renderer) renderFencedCodeBlock(w io.Writer, n *ast.FencedCodeBlock, entering bool, source []byte) { + io.WriteString(w, "\n") + + if entering { + // body + for i := range n.Lines().Len() { + line := n.Lines().At(i) + io.WriteString(w, "| ") + w.Write(line.Value(source)) + } + } +} + +func (r *renderer) renderAutoLink(w io.Writer, n *ast.AutoLink, entering bool, source []byte) { + if entering { + linkColor := r.config.Options["linkColor"].(string) + io.WriteString(w, "["+linkColor+"]") + w.Write(n.URL(source)) + } else { + io.WriteString(w, "[-::]") + } +} + +func (r *renderer) renderLink(w io.Writer, n *ast.Link, entering bool) { + if entering { + linkColor := r.config.Options["linkColor"].(string) + io.WriteString(w, fmt.Sprintf("[%s:::%s]", linkColor, n.Destination)) + } else { + io.WriteString(w, "[-:::-]") + } +} + +func (r *renderer) renderText(w io.Writer, n *ast.Text, entering bool, source []byte) { + if entering { + w.Write(n.Segment.Value(source)) + switch { + case n.HardLineBreak(): + io.WriteString(w, "\n\n") + case n.SoftLineBreak(): + io.WriteString(w, "\n") + } + } +} + +func (r *renderer) renderInline(w io.Writer, n *discordmd.Inline, entering bool) { + if entering { + switch n.Attr { + case discordmd.AttrBold: + io.WriteString(w, "[::b]") + case discordmd.AttrItalics: + io.WriteString(w, "[::i]") + case discordmd.AttrUnderline: + io.WriteString(w, "[::u]") + case discordmd.AttrStrikethrough: + io.WriteString(w, "[::s]") + case discordmd.AttrMonospace: + io.WriteString(w, "[::r]") + } + } else { + switch n.Attr { + case discordmd.AttrBold: + io.WriteString(w, "[::B]") + case discordmd.AttrItalics: + io.WriteString(w, "[::I]") + case discordmd.AttrUnderline: + io.WriteString(w, "[::U]") + case discordmd.AttrStrikethrough: + io.WriteString(w, "[::S]") + case discordmd.AttrMonospace: + io.WriteString(w, "[::R]") + } + } +} + +func (r *renderer) renderMention(w io.Writer, n *discordmd.Mention, entering bool) { + if entering { + io.WriteString(w, "[::b]") + + switch { + case n.Channel != nil: + io.WriteString(w, "#"+n.Channel.Name) + case n.GuildUser != nil: + username := n.GuildUser.DisplayOrUsername() + if r.config.Options["showNicknames"].(bool) && n.GuildUser.Member != nil && n.GuildUser.Member.Nick != "" { + username = n.GuildUser.Member.Nick + } + io.WriteString(w, "@"+username) + case n.GuildRole != nil: + io.WriteString(w, "@"+n.GuildRole.Name) + } + } else { + io.WriteString(w, "[::B]") + } +} + +func (r *renderer) renderEmoji(w io.Writer, n *discordmd.Emoji, entering bool) { + if entering { + emojiColor := r.config.Options["emojiColor"].(string) + io.WriteString(w, "["+emojiColor+"]") + io.WriteString(w, ":"+n.Name+":") + } else { + io.WriteString(w, "[-]") + } +}