Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
canifa_note
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Vũ Hoàng Anh
canifa_note
Commits
12376430
Commit
12376430
authored
Dec 16, 2023
by
Steven
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
chore: update parser tests
parent
aee0e31b
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
50 additions
and
46 deletions
+50
-46
blockquote.go
plugin/gomark/parser/blockquote.go
+1
-1
blockquote_test.go
plugin/gomark/parser/blockquote_test.go
+12
-5
heading.go
plugin/gomark/parser/heading.go
+9
-9
heading_test.go
plugin/gomark/parser/heading_test.go
+1
-2
ordered_list.go
plugin/gomark/parser/ordered_list.go
+1
-2
paragraph.go
plugin/gomark/parser/paragraph.go
+3
-0
paragraph_test.go
plugin/gomark/parser/paragraph_test.go
+0
-2
parser_test.go
plugin/gomark/parser/parser_test.go
+0
-3
unordered_list.go
plugin/gomark/parser/unordered_list.go
+1
-2
html_test.go
plugin/gomark/render/html/html_test.go
+5
-1
string.go
plugin/gomark/render/string/string.go
+6
-16
string_test.go
plugin/gomark/render/string/string_test.go
+11
-3
No files found.
plugin/gomark/parser/blockquote.go
View file @
12376430
...
...
@@ -42,7 +42,7 @@ func (p *BlockquoteParser) Parse(tokens []*tokenizer.Token) (ast.Node, error) {
}
contentTokens
:=
tokens
[
2
:
size
]
children
,
err
:=
Parse
Inline
(
contentTokens
)
children
,
err
:=
Parse
BlockWithParsers
(
contentTokens
,
[]
BlockParser
{
NewParagraphParser
(),
NewLineBreakParser
()}
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
plugin/gomark/parser/blockquote_test.go
View file @
12376430
...
...
@@ -18,8 +18,12 @@ func TestBlockquoteParser(t *testing.T) {
text
:
"> Hello world"
,
blockquote
:
&
ast
.
Blockquote
{
Children
:
[]
ast
.
Node
{
&
ast
.
Text
{
Content
:
"Hello world"
,
&
ast
.
Paragraph
{
Children
:
[]
ast
.
Node
{
&
ast
.
Text
{
Content
:
"Hello world"
,
},
},
},
},
},
...
...
@@ -28,10 +32,13 @@ func TestBlockquoteParser(t *testing.T) {
text
:
"> Hello
\n
world"
,
blockquote
:
&
ast
.
Blockquote
{
Children
:
[]
ast
.
Node
{
&
ast
.
Text
{
Content
:
"Hello"
,
&
ast
.
Paragraph
{
Children
:
[]
ast
.
Node
{
&
ast
.
Text
{
Content
:
"Hello"
,
},
},
},
&
ast
.
LineBreak
{},
},
},
},
...
...
plugin/gomark/parser/heading.go
View file @
12376430
...
...
@@ -14,30 +14,27 @@ func NewHeadingParser() *HeadingParser {
}
func
(
*
HeadingParser
)
Match
(
tokens
[]
*
tokenizer
.
Token
)
(
int
,
bool
)
{
cursor
:=
0
level
:=
0
for
_
,
token
:=
range
tokens
{
if
token
.
Type
==
tokenizer
.
PoundSign
{
cursor
++
level
++
}
else
{
break
}
}
if
len
(
tokens
)
<=
cursor
+
1
{
if
len
(
tokens
)
<=
level
+
1
{
return
0
,
false
}
if
tokens
[
cursor
]
.
Type
!=
tokenizer
.
Space
{
if
tokens
[
level
]
.
Type
!=
tokenizer
.
Space
{
return
0
,
false
}
level
:=
cursor
if
level
==
0
||
level
>
6
{
return
0
,
false
}
cursor
++
contentTokens
:=
[]
*
tokenizer
.
Token
{}
for
_
,
token
:=
range
tokens
[
cursor
:
]
{
for
_
,
token
:=
range
tokens
[
level
+
1
:
]
{
contentTokens
=
append
(
contentTokens
,
token
)
cursor
++
if
token
.
Type
==
tokenizer
.
Newline
{
break
}
...
...
@@ -46,7 +43,7 @@ func (*HeadingParser) Match(tokens []*tokenizer.Token) (int, bool) {
return
0
,
false
}
return
cursor
,
true
return
len
(
contentTokens
)
+
level
+
1
,
true
}
func
(
p
*
HeadingParser
)
Parse
(
tokens
[]
*
tokenizer
.
Token
)
(
ast
.
Node
,
error
)
{
...
...
@@ -65,6 +62,9 @@ func (p *HeadingParser) Parse(tokens []*tokenizer.Token) (ast.Node, error) {
}
contentTokens
:=
tokens
[
level
+
1
:
size
]
if
contentTokens
[
len
(
contentTokens
)
-
1
]
.
Type
==
tokenizer
.
Newline
{
contentTokens
=
contentTokens
[
:
len
(
contentTokens
)
-
1
]
}
children
,
err
:=
ParseInline
(
contentTokens
)
if
err
!=
nil
{
return
nil
,
err
...
...
plugin/gomark/parser/heading_test.go
View file @
12376430
...
...
@@ -19,7 +19,7 @@ func TestHeadingParser(t *testing.T) {
heading
:
nil
,
},
{
text
:
"## Hello World"
,
text
:
"## Hello World
\n
123
"
,
heading
:
&
ast
.
Heading
{
Level
:
2
,
Children
:
[]
ast
.
Node
{
...
...
@@ -53,7 +53,6 @@ Hello World`,
&
ast
.
Text
{
Content
:
"123 "
,
},
&
ast
.
LineBreak
{},
},
},
},
...
...
plugin/gomark/parser/ordered_list.go
View file @
12376430
...
...
@@ -43,8 +43,7 @@ func (p *OrderedListParser) Parse(tokens []*tokenizer.Token) (ast.Node, error) {
}
contentTokens
:=
tokens
[
3
:
size
]
lastToken
:=
contentTokens
[
len
(
contentTokens
)
-
1
]
if
lastToken
.
Type
==
tokenizer
.
Newline
{
if
contentTokens
[
len
(
contentTokens
)
-
1
]
.
Type
==
tokenizer
.
Newline
{
contentTokens
=
contentTokens
[
:
len
(
contentTokens
)
-
1
]
}
children
,
err
:=
ParseInline
(
contentTokens
)
...
...
plugin/gomark/parser/paragraph.go
View file @
12376430
...
...
@@ -39,6 +39,9 @@ func (p *ParagraphParser) Parse(tokens []*tokenizer.Token) (ast.Node, error) {
}
contentTokens
:=
tokens
[
:
size
]
if
contentTokens
[
len
(
contentTokens
)
-
1
]
.
Type
==
tokenizer
.
Newline
{
contentTokens
=
contentTokens
[
:
len
(
contentTokens
)
-
1
]
}
children
,
err
:=
ParseInline
(
contentTokens
)
if
err
!=
nil
{
return
nil
,
err
...
...
plugin/gomark/parser/paragraph_test.go
View file @
12376430
...
...
@@ -39,7 +39,6 @@ func TestParagraphParser(t *testing.T) {
&
ast
.
Text
{
Content
:
"Hello world!"
,
},
&
ast
.
LineBreak
{},
},
},
},
...
...
@@ -50,7 +49,6 @@ func TestParagraphParser(t *testing.T) {
&
ast
.
Text
{
Content
:
"Hello world!"
,
},
&
ast
.
LineBreak
{},
},
},
},
...
...
plugin/gomark/parser/parser_test.go
View file @
12376430
...
...
@@ -65,7 +65,6 @@ func TestParser(t *testing.T) {
&
ast
.
Text
{
Content
:
"!"
,
},
&
ast
.
LineBreak
{},
},
},
&
ast
.
Paragraph
{
...
...
@@ -96,7 +95,6 @@ func TestParser(t *testing.T) {
&
ast
.
Text
{
Content
:
"!"
,
},
&
ast
.
LineBreak
{},
},
},
&
ast
.
CodeBlock
{
...
...
@@ -113,7 +111,6 @@ func TestParser(t *testing.T) {
&
ast
.
Text
{
Content
:
"Hello world!"
,
},
&
ast
.
LineBreak
{},
},
},
&
ast
.
LineBreak
{},
...
...
plugin/gomark/parser/unordered_list.go
View file @
12376430
...
...
@@ -44,8 +44,7 @@ func (p *UnorderedListParser) Parse(tokens []*tokenizer.Token) (ast.Node, error)
symbolToken
:=
tokens
[
0
]
contentTokens
:=
tokens
[
2
:
size
]
lastToken
:=
contentTokens
[
len
(
contentTokens
)
-
1
]
if
lastToken
.
Type
==
tokenizer
.
Newline
{
if
contentTokens
[
len
(
contentTokens
)
-
1
]
.
Type
==
tokenizer
.
Newline
{
contentTokens
=
contentTokens
[
:
len
(
contentTokens
)
-
1
]
}
children
,
err
:=
ParseInline
(
contentTokens
)
...
...
plugin/gomark/render/html/html_test.go
View file @
12376430
...
...
@@ -24,12 +24,16 @@ func TestHTMLRender(t *testing.T) {
},
{
text
:
"> Hello
\n
> world!"
,
expected
:
`<blockquote>
Hello<br>world!
</blockquote>`
,
expected
:
`<blockquote>
<p>Hello</p><p>world!</p>
</blockquote>`
,
},
{
text
:
"*Hello* world!"
,
expected
:
`<p><em>Hello</em> world!</p>`
,
},
{
text
:
"Hello world!
\n\n
New paragraph."
,
expected
:
"<p>Hello world!</p><br><p>New paragraph.</p>"
,
},
{
text
:
"**Hello** world!"
,
expected
:
`<p><strong>Hello</strong> world!</p>`
,
...
...
plugin/gomark/render/string/string.go
View file @
12376430
...
...
@@ -2,6 +2,7 @@ package string
import
(
"bytes"
"fmt"
"github.com/usememos/memos/plugin/gomark/ast"
)
...
...
@@ -84,6 +85,7 @@ func (r *StringRender) renderLineBreak(_ *ast.LineBreak) {
func
(
r
*
StringRender
)
renderParagraph
(
node
*
ast
.
Paragraph
)
{
r
.
RenderNodes
(
node
.
Children
)
r
.
output
.
WriteString
(
"
\n
"
)
}
func
(
r
*
StringRender
)
renderCodeBlock
(
node
*
ast
.
CodeBlock
)
{
...
...
@@ -106,27 +108,15 @@ func (r *StringRender) renderBlockquote(node *ast.Blockquote) {
}
func
(
r
*
StringRender
)
renderUnorderedList
(
node
*
ast
.
UnorderedList
)
{
prevSibling
,
nextSibling
:=
node
.
PrevSibling
(),
node
.
NextSibling
()
if
prevSibling
==
nil
||
prevSibling
.
Type
()
!=
ast
.
UnorderedListNode
{
r
.
output
.
WriteString
(
"
\n
"
)
}
r
.
output
.
WriteString
(
"* "
)
r
.
output
.
WriteString
(
node
.
Symbol
)
r
.
RenderNodes
(
node
.
Children
)
if
nextSibling
==
nil
||
nextSibling
.
Type
()
!=
ast
.
UnorderedListNode
{
r
.
output
.
WriteString
(
"
\n
"
)
}
r
.
output
.
WriteString
(
"
\n
"
)
}
func
(
r
*
StringRender
)
renderOrderedList
(
node
*
ast
.
OrderedList
)
{
prevSibling
,
nextSibling
:=
node
.
PrevSibling
(),
node
.
NextSibling
()
if
prevSibling
==
nil
||
prevSibling
.
Type
()
!=
ast
.
OrderedListNode
{
r
.
output
.
WriteString
(
"
\n
"
)
}
r
.
output
.
WriteString
(
"1. "
)
r
.
output
.
WriteString
(
fmt
.
Sprintf
(
"%s. "
,
node
.
Number
))
r
.
RenderNodes
(
node
.
Children
)
if
nextSibling
==
nil
||
nextSibling
.
Type
()
!=
ast
.
OrderedListNode
{
r
.
output
.
WriteString
(
"
\n
"
)
}
r
.
output
.
WriteString
(
"
\n
"
)
}
func
(
r
*
StringRender
)
renderText
(
node
*
ast
.
Text
)
{
...
...
plugin/gomark/render/string/string_test.go
View file @
12376430
...
...
@@ -14,17 +14,25 @@ func TestStringRender(t *testing.T) {
text
string
expected
string
}{
{
text
:
""
,
expected
:
""
,
},
{
text
:
"Hello world!"
,
expected
:
`Hello world!`
,
expected
:
"Hello world!
\n
"
,
},
{
text
:
"**Hello** world!"
,
expected
:
`Hello world!`
,
expected
:
"Hello world!
\n
"
,
},
{
text
:
"**[your/slash](https://example.com)** world!"
,
expected
:
`your/slash world!`
,
expected
:
"your/slash world!
\n
"
,
},
{
text
:
"Test
\n
1. Hello
\n
2. World"
,
expected
:
"Test
\n
1. Hello
\n
2. World
\n
"
,
},
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment