feat: implement gomark parsers

This commit is contained in:
Steven
2023-12-13 21:00:13 +08:00
parent 2d9c5d16e1
commit 453707d18c
28 changed files with 625 additions and 209 deletions

View File

@ -5,24 +5,20 @@ import (
"github.com/stretchr/testify/require"
"github.com/usememos/memos/plugin/gomark/ast"
"github.com/usememos/memos/plugin/gomark/parser/tokenizer"
)
func TestLinkParser(t *testing.T) {
tests := []struct {
text string
link *LinkParser
link ast.Node
}{
{
text: "[](https://example.com)",
link: &LinkParser{
ContentTokens: []*tokenizer.Token{
{
Type: tokenizer.Text,
Value: "https://example.com",
},
},
URL: "https://example.com",
link: &ast.Link{
Text: "",
URL: "https://example.com",
},
},
{
@ -35,27 +31,14 @@ func TestLinkParser(t *testing.T) {
},
{
text: "[hello world](https://example.com)",
link: &LinkParser{
ContentTokens: []*tokenizer.Token{
{
Type: tokenizer.Text,
Value: "hello",
},
{
Type: tokenizer.Space,
Value: " ",
},
{
Type: tokenizer.Text,
Value: "world",
},
},
URL: "https://example.com",
link: &ast.Link{
Text: "hello world",
URL: "https://example.com",
},
},
}
for _, test := range tests {
tokens := tokenizer.Tokenize(test.text)
require.Equal(t, test.link, NewLinkParser().Match(tokens))
require.Equal(t, test.link, NewLinkParser().Parse(tokens))
}
}