diff --git a/internal/discord/message/message.go b/internal/discord/message/message.go index 5de2bf2..a65179e 100644 --- a/internal/discord/message/message.go +++ b/internal/discord/message/message.go @@ -80,9 +80,10 @@ func NewMessageUpdateContent(msg discord.Message, s *state.Instance) Message { } } + var content = segments.ParseMessage(&msg, s.Store) return Message{ messageHeader: newHeader(msg), - content: segments.ParseMessage(&msg, s.Store), + content: content, } } diff --git a/internal/segments/codeblock/codeblock.go b/internal/segments/codeblock/codeblock.go index f869aa0..946f14b 100644 --- a/internal/segments/codeblock/codeblock.go +++ b/internal/segments/codeblock/codeblock.go @@ -8,7 +8,7 @@ import ( ) func init() { - renderer.Register(ast.KindCodeBlock, codeblock) + renderer.Register(ast.KindFencedCodeBlock, codeblock) } func codeblock(r *renderer.Text, node ast.Node, enter bool) ast.WalkStatus { diff --git a/internal/segments/md.go b/internal/segments/md.go index e118e0c..cae4391 100644 --- a/internal/segments/md.go +++ b/internal/segments/md.go @@ -7,6 +7,14 @@ import ( "github.com/diamondburned/cchat-discord/internal/segments/renderer" "github.com/diamondburned/cchat/text" "github.com/diamondburned/ningen/md" + + _ "github.com/diamondburned/cchat-discord/internal/segments/blockquote" + _ "github.com/diamondburned/cchat-discord/internal/segments/codeblock" + _ "github.com/diamondburned/cchat-discord/internal/segments/colored" + _ "github.com/diamondburned/cchat-discord/internal/segments/emoji" + _ "github.com/diamondburned/cchat-discord/internal/segments/inline" + _ "github.com/diamondburned/cchat-discord/internal/segments/link" + _ "github.com/diamondburned/cchat-discord/internal/segments/mention" ) func ParseMessage(m *discord.Message, s state.Store) text.Rich { diff --git a/internal/segments/renderer/renderer.go b/internal/segments/renderer/renderer.go index d84cdee..9d85241 100644 --- a/internal/segments/renderer/renderer.go +++ b/internal/segments/renderer/renderer.go @@ -3,6 +3,7 @@ package renderer import ( "bytes" "fmt" + "log" "github.com/diamondburned/arikawa/discord" "github.com/diamondburned/arikawa/state" @@ -18,6 +19,7 @@ var renderers = map[ast.NodeKind]Renderer{} // Register registers a renderer to a node kind. func Register(kind ast.NodeKind, r Renderer) { + log.Printf("Registering kind %v", kind) renderers[kind] = r } @@ -185,6 +187,8 @@ func (r *Text) RenderNode(n ast.Node, enter bool) (ast.WalkStatus, error) { return f(r, n, enter), nil } + log.Println("unknown kind:", n.Kind()) + switch n := n.(type) { case *ast.Document: case *ast.Paragraph: @@ -192,20 +196,6 @@ func (r *Text) RenderNode(n ast.Node, enter bool) (ast.WalkStatus, error) { // TODO: investigate // r.Buffer.WriteByte('\n') } - // case *ast.Blockquote: - // return r.blockquote(n, enter), nil - // case *ast.FencedCodeBlock: - // return r.codeblock(n, enter), nil - // case *ast.Link: - // return r.link(n, enter), nil - // case *ast.AutoLink: - // return r.autoLink(n, enter), nil - // case *md.Inline: - // return r.inline(n, enter), nil - // case *md.Emoji: - // return r.emoji(n, enter), nil - // case *md.Mention: - // return r.mention(n, enter), nil case *ast.String: if enter { r.Buffer.Write(n.Value)