diff --git a/go.mod b/go.mod index b1625b0..184ac54 100644 --- a/go.mod +++ b/go.mod @@ -15,6 +15,7 @@ require ( github.com/klauspost/cpuid v1.3.1 // indirect github.com/kr/pretty v0.2.1 // indirect github.com/kr/text v0.2.0 // indirect + github.com/kyokomi/emoji v2.2.4+incompatible github.com/lib/pq v1.8.0 // indirect github.com/lopezator/migrator v0.3.0 github.com/magiconair/properties v1.8.3 // indirect diff --git a/go.sum b/go.sum index 9172b85..c9fc2b2 100644 --- a/go.sum +++ b/go.sum @@ -157,6 +157,8 @@ github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kyokomi/emoji v2.2.4+incompatible h1:np0woGKwx9LiHAQmwZx79Oc0rHpNw3o+3evou4BEPv4= +github.com/kyokomi/emoji v2.2.4+incompatible/go.mod h1:mZ6aGCD7yk8j6QY6KICwnZ2pxoszVseX1DNoGtU2tBA= github.com/lib/pq v1.0.0 h1:X5PMW56eZitiTeO7tKzZxFCSpbFZJtkMMooicw2us9A= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= diff --git a/markdown.go b/markdown.go index affff79..85d8928 100644 --- a/markdown.go +++ b/markdown.go @@ -2,14 +2,20 @@ package main import ( "bytes" + kemoji "github.com/kyokomi/emoji" "github.com/yuin/goldmark" "github.com/yuin/goldmark-emoji" "github.com/yuin/goldmark-emoji/definition" "github.com/yuin/goldmark/extension" "github.com/yuin/goldmark/parser" "github.com/yuin/goldmark/renderer/html" + "strings" + "sync" ) +var emojilib definition.Emojis +var emojiOnce sync.Once + var markdown goldmark.Markdown func initMarkdown() { @@ -26,7 +32,7 @@ func initMarkdown() { extension.Typographer, // Emojis emoji.New( - emoji.WithEmojis(definition.Github()), + emoji.WithEmojis(EmojiGoLib()), ), ), ) @@ -38,3 +44,14 @@ func renderMarkdown(source string) (content []byte, err error) { content = buffer.Bytes() return } + +func EmojiGoLib() definition.Emojis { + emojiOnce.Do(func() { + var emojis []definition.Emoji + for shotcode, e := range kemoji.CodeMap() { + emojis = append(emojis, definition.NewEmoji(e, []rune(e), strings.ReplaceAll(shotcode, ":", ""))) + } + emojilib = definition.NewEmojis(emojis...) + }) + return emojilib +}