Segregate markdown utilities to discordmd package
This commit is contained in:
parent
31bbb86a2d
commit
02a8dbd740
4 changed files with 31 additions and 23 deletions
24
discordmd/discordmd.go
Normal file
24
discordmd/discordmd.go
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
package discordmd
|
||||
|
||||
import (
|
||||
"regexp"
|
||||
)
|
||||
|
||||
var (
|
||||
boldRegex = regexp.MustCompile(`(?ms)\*\*(.*?)\*\*`)
|
||||
italicRegex = regexp.MustCompile(`(?ms)\*(.*?)\*`)
|
||||
underlineRegex = regexp.MustCompile(`(?ms)__(.*?)__`)
|
||||
strikeThroughRegex = regexp.MustCompile(`(?ms)~~(.*?)~~`)
|
||||
)
|
||||
|
||||
// Parse parses Discord-flavored markdown to tview's [Color Tags].
|
||||
//
|
||||
// [Color Tags]: https://pkg.go.dev/github.com/rivo/tview#hdr-Colors
|
||||
func Parse(md string) string {
|
||||
md = boldRegex.ReplaceAllString(md, "[::b]$1[::-]")
|
||||
md = italicRegex.ReplaceAllString(md, "[::i]$1[::-]")
|
||||
md = underlineRegex.ReplaceAllString(md, "[::u]$1[::-]")
|
||||
md = strikeThroughRegex.ReplaceAllString(md, "[::s]$1[::-]")
|
||||
|
||||
return md
|
||||
}
|
||||
|
|
@ -5,6 +5,7 @@ import (
|
|||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/ayntgl/discordo/discordmd"
|
||||
"github.com/diamondburned/arikawa/v3/discord"
|
||||
)
|
||||
|
||||
|
|
@ -93,7 +94,7 @@ func buildReferencedMessage(b *strings.Builder, rm *discord.Message, clientID di
|
|||
|
||||
if rm.Content != "" {
|
||||
rm.Content = buildMentions(rm.Content, rm.Mentions, clientID)
|
||||
b.WriteString(parseMarkdown(rm.Content))
|
||||
b.WriteString(discordmd.Parse(rm.Content))
|
||||
}
|
||||
|
||||
b.WriteString("[::-]")
|
||||
|
|
@ -104,7 +105,7 @@ func buildReferencedMessage(b *strings.Builder, rm *discord.Message, clientID di
|
|||
func buildContent(b *strings.Builder, m discord.Message, clientID discord.UserID) {
|
||||
if m.Content != "" {
|
||||
m.Content = buildMentions(m.Content, m.Mentions, clientID)
|
||||
b.WriteString(parseMarkdown(m.Content))
|
||||
b.WriteString(discordmd.Parse(m.Content))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -147,7 +148,7 @@ func buildEmbeds(b *strings.Builder, es []discord.Embed) {
|
|||
embedBuilder.WriteByte('\n')
|
||||
}
|
||||
|
||||
embedBuilder.WriteString(parseMarkdown(e.Description))
|
||||
embedBuilder.WriteString(discordmd.Parse(e.Description))
|
||||
}
|
||||
|
||||
if len(e.Fields) != 0 {
|
||||
|
|
@ -161,7 +162,7 @@ func buildEmbeds(b *strings.Builder, es []discord.Embed) {
|
|||
embedBuilder.WriteString(ef.Name)
|
||||
embedBuilder.WriteString("[::-]")
|
||||
embedBuilder.WriteByte('\n')
|
||||
embedBuilder.WriteString(parseMarkdown(ef.Value))
|
||||
embedBuilder.WriteString(discordmd.Parse(ef.Value))
|
||||
|
||||
if i != len(e.Fields)-1 {
|
||||
embedBuilder.WriteString("\n\n")
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ package ui
|
|||
import (
|
||||
"log"
|
||||
|
||||
"github.com/ayntgl/discordo/discordmd"
|
||||
"github.com/diamondburned/arikawa/v3/discord"
|
||||
"github.com/gdamore/tcell/v2"
|
||||
"github.com/rivo/tview"
|
||||
|
|
@ -43,7 +44,7 @@ func newMessagesView(app *Application) *MessagesView {
|
|||
func (v *MessagesView) setTitle(c *discord.Channel) {
|
||||
title := channelToString(*c)
|
||||
if c.Topic != "" {
|
||||
title += " - " + parseMarkdown(c.Topic)
|
||||
title += " - " + discordmd.Parse(c.Topic)
|
||||
}
|
||||
|
||||
v.SetTitle(title)
|
||||
|
|
|
|||
18
ui/util.go
18
ui/util.go
|
|
@ -1,30 +1,12 @@
|
|||
package ui
|
||||
|
||||
import (
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
"github.com/diamondburned/arikawa/v3/discord"
|
||||
"github.com/diamondburned/arikawa/v3/state"
|
||||
)
|
||||
|
||||
var (
|
||||
boldRegex = regexp.MustCompile(`(?ms)\*\*(.*?)\*\*`)
|
||||
italicRegex = regexp.MustCompile(`(?ms)\*(.*?)\*`)
|
||||
underlineRegex = regexp.MustCompile(`(?ms)__(.*?)__`)
|
||||
strikeThroughRegex = regexp.MustCompile(`(?ms)~~(.*?)~~`)
|
||||
)
|
||||
|
||||
func parseMarkdown(md string) string {
|
||||
var res string
|
||||
res = boldRegex.ReplaceAllString(md, "[::b]$1[::-]")
|
||||
res = italicRegex.ReplaceAllString(res, "[::i]$1[::-]")
|
||||
res = underlineRegex.ReplaceAllString(res, "[::u]$1[::-]")
|
||||
res = strikeThroughRegex.ReplaceAllString(res, "[::s]$1[::-]")
|
||||
|
||||
return res
|
||||
}
|
||||
|
||||
func channelToString(c discord.Channel) string {
|
||||
var repr string
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue