From d9026d3dd849f40bf9128a3a40a9ff9b17e69802 Mon Sep 17 00:00:00 2001 From: Retropaint <70713407+Retropaint@users.noreply.github.com> Date: Fri, 20 Sep 2024 22:40:48 +0800 Subject: [PATCH] feat: color-coded & formatted emotes (#428) --- README.md | 1 + cmd/messages_text.go | 2 +- internal/config/theme.go | 10 ++++++---- internal/markdown/markdown.go | 5 ++++- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index e8310a9..ddc4c89 100644 --- a/README.md +++ b/README.md @@ -111,6 +111,7 @@ graphics = true [theme.messages_text] author_color = "aqua" +emote_color = "green" reply_indicator = "╭ " ``` diff --git a/cmd/messages_text.go b/cmd/messages_text.go index e0abaf1..f4340c9 100644 --- a/cmd/messages_text.go +++ b/cmd/messages_text.go @@ -146,7 +146,7 @@ func (mt *MessagesText) createBody(w io.Writer, m discord.Message, isReply bool) if isReply { fmt.Fprint(w, "[::d]") } - fmt.Fprint(w, markdown.Parse(tview.Escape(body))) + fmt.Fprint(w, markdown.Parse(tview.Escape(body), cfg.Theme.MessagesText.EmoteColor)) if isReply { fmt.Fprint(w, "[::-]") } diff --git a/internal/config/theme.go b/internal/config/theme.go index ea1071d..cea85a8 100644 --- a/internal/config/theme.go +++ b/internal/config/theme.go @@ -21,8 +21,9 @@ type ( } MessagesTextTheme struct { - AuthorColor string `toml:"author_color"` - ReplyIndicator string `toml:"reply_indicator"` + AuthorColor string `toml:"author_color"` + EmoteColor string `toml:"emote_color"` + ReplyIndicator string `toml:"reply_indicator"` } ) @@ -40,8 +41,9 @@ func defaultTheme() Theme { Graphics: true, }, MessagesText: MessagesTextTheme{ - AuthorColor: "aqua", - ReplyIndicator: string(tview.BoxDrawingsLightArcDownAndRight) + " ", + AuthorColor: "aqua", + EmoteColor: "green", + ReplyIndicator: string(tview.BoxDrawingsLightArcDownAndRight) + " ", }, } } diff --git a/internal/markdown/markdown.go b/internal/markdown/markdown.go index 063df40..343c4d4 100644 --- a/internal/markdown/markdown.go +++ b/internal/markdown/markdown.go @@ -10,13 +10,16 @@ var ( underlineRe = regexp.MustCompile(`(?ms)__(.*?)__`) strikethroughRe = regexp.MustCompile(`(?ms)~~(.*?)~~`) codeblockRe = regexp.MustCompile("(?ms)`" + `([^` + "`" + `\n]+)` + "`") + emoteRe = regexp.MustCompile(`<(:[a-zA-Z0-9]+:)[0-9]+>`) ) -func Parse(input string) string { +func Parse(input string, emoteColor string) string { input = boldRe.ReplaceAllString(input, "[::b]$1[::B]") input = italicRe.ReplaceAllString(input, "[::i]$1[::I]") input = underlineRe.ReplaceAllString(input, "[::u]$1[::U]") input = strikethroughRe.ReplaceAllString(input, "[::s]$1[::S]") input = codeblockRe.ReplaceAllString(input, "[::r]$1[::R]") + input = emoteRe.ReplaceAllString(input, "[" + emoteColor + "]$1[-:-:-]") + return input }