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
e8ca2ea5
Commit
e8ca2ea5
authored
Dec 16, 2023
by
Steven
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
chore: rename renderer package
parent
e43a445c
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
73 additions
and
73 deletions
+73
-73
rss.go
api/v1/rss.go
+2
-2
renderer.go
plugin/gomark/render/renderer.go
+0
-14
html.go
plugin/gomark/renderer/html/html.go
+26
-26
html_test.go
plugin/gomark/renderer/html/html_test.go
+2
-2
renderer.go
plugin/gomark/renderer/renderer.go
+14
-0
string.go
plugin/gomark/renderer/string/string.go
+26
-26
string_test.go
plugin/gomark/renderer/string/string_test.go
+1
-1
frontend.go
server/frontend/frontend.go
+2
-2
No files found.
api/v1/rss.go
View file @
e8ca2ea5
...
@@ -15,7 +15,7 @@ import (
...
@@ -15,7 +15,7 @@ import (
"github.com/usememos/memos/internal/util"
"github.com/usememos/memos/internal/util"
"github.com/usememos/memos/plugin/gomark/parser"
"github.com/usememos/memos/plugin/gomark/parser"
"github.com/usememos/memos/plugin/gomark/parser/tokenizer"
"github.com/usememos/memos/plugin/gomark/parser/tokenizer"
"github.com/usememos/memos/plugin/gomark/render"
"github.com/usememos/memos/plugin/gomark/render
er
"
"github.com/usememos/memos/store"
"github.com/usememos/memos/store"
)
)
...
@@ -198,7 +198,7 @@ func getRSSItemDescription(content string) (string, error) {
...
@@ -198,7 +198,7 @@ func getRSSItemDescription(content string) (string, error) {
if
err
!=
nil
{
if
err
!=
nil
{
return
""
,
err
return
""
,
err
}
}
result
:=
render
.
NewHTMLRend
er
()
.
Render
(
nodes
)
result
:=
render
er
.
NewHTMLRender
er
()
.
Render
(
nodes
)
return
result
,
nil
return
result
,
nil
}
}
...
...
plugin/gomark/render/renderer.go
deleted
100644 → 0
View file @
e43a445c
package
render
import
(
htmlrender
"github.com/usememos/memos/plugin/gomark/render/html"
stringrender
"github.com/usememos/memos/plugin/gomark/render/string"
)
func
NewHTMLRender
()
*
htmlrender
.
HTMLRender
{
return
htmlrender
.
NewHTMLRender
()
}
func
NewStringRender
()
*
stringrender
.
StringRender
{
return
stringrender
.
NewStringRender
()
}
plugin/gomark/render/html/html.go
→
plugin/gomark/render
er
/html/html.go
View file @
e8ca2ea5
...
@@ -7,8 +7,8 @@ import (
...
@@ -7,8 +7,8 @@ import (
"github.com/usememos/memos/plugin/gomark/ast"
"github.com/usememos/memos/plugin/gomark/ast"
)
)
// HTMLRender is a simple renderer that converts AST to HTML.
// HTMLRender
er
is a simple renderer that converts AST to HTML.
type
HTMLRender
struct
{
type
HTMLRender
er
struct
{
output
*
bytes
.
Buffer
output
*
bytes
.
Buffer
context
*
RendererContext
context
*
RendererContext
}
}
...
@@ -16,16 +16,16 @@ type HTMLRender struct {
...
@@ -16,16 +16,16 @@ type HTMLRender struct {
type
RendererContext
struct
{
type
RendererContext
struct
{
}
}
// NewHTMLRender creates a new HTMLRender.
// NewHTMLRender
er
creates a new HTMLRender.
func
NewHTMLRender
()
*
HTMLRend
er
{
func
NewHTMLRender
er
()
*
HTMLRender
er
{
return
&
HTMLRender
{
return
&
HTMLRender
er
{
output
:
new
(
bytes
.
Buffer
),
output
:
new
(
bytes
.
Buffer
),
context
:
&
RendererContext
{},
context
:
&
RendererContext
{},
}
}
}
}
// RenderNode renders a single AST node to HTML.
// RenderNode renders a single AST node to HTML.
func
(
r
*
HTMLRender
)
RenderNode
(
node
ast
.
Node
)
{
func
(
r
*
HTMLRender
er
)
RenderNode
(
node
ast
.
Node
)
{
switch
n
:=
node
.
(
type
)
{
switch
n
:=
node
.
(
type
)
{
case
*
ast
.
LineBreak
:
case
*
ast
.
LineBreak
:
r
.
renderLineBreak
(
n
)
r
.
renderLineBreak
(
n
)
...
@@ -69,46 +69,46 @@ func (r *HTMLRender) RenderNode(node ast.Node) {
...
@@ -69,46 +69,46 @@ func (r *HTMLRender) RenderNode(node ast.Node) {
}
}
// RenderNodes renders a slice of AST nodes to HTML.
// RenderNodes renders a slice of AST nodes to HTML.
func
(
r
*
HTMLRender
)
RenderNodes
(
nodes
[]
ast
.
Node
)
{
func
(
r
*
HTMLRender
er
)
RenderNodes
(
nodes
[]
ast
.
Node
)
{
for
_
,
node
:=
range
nodes
{
for
_
,
node
:=
range
nodes
{
r
.
RenderNode
(
node
)
r
.
RenderNode
(
node
)
}
}
}
}
// Render renders the AST to HTML.
// Render renders the AST to HTML.
func
(
r
*
HTMLRender
)
Render
(
astRoot
[]
ast
.
Node
)
string
{
func
(
r
*
HTMLRender
er
)
Render
(
astRoot
[]
ast
.
Node
)
string
{
r
.
RenderNodes
(
astRoot
)
r
.
RenderNodes
(
astRoot
)
return
r
.
output
.
String
()
return
r
.
output
.
String
()
}
}
func
(
r
*
HTMLRender
)
renderLineBreak
(
_
*
ast
.
LineBreak
)
{
func
(
r
*
HTMLRender
er
)
renderLineBreak
(
_
*
ast
.
LineBreak
)
{
r
.
output
.
WriteString
(
"<br>"
)
r
.
output
.
WriteString
(
"<br>"
)
}
}
func
(
r
*
HTMLRender
)
renderParagraph
(
node
*
ast
.
Paragraph
)
{
func
(
r
*
HTMLRender
er
)
renderParagraph
(
node
*
ast
.
Paragraph
)
{
r
.
output
.
WriteString
(
"<p>"
)
r
.
output
.
WriteString
(
"<p>"
)
r
.
RenderNodes
(
node
.
Children
)
r
.
RenderNodes
(
node
.
Children
)
r
.
output
.
WriteString
(
"</p>"
)
r
.
output
.
WriteString
(
"</p>"
)
}
}
func
(
r
*
HTMLRender
)
renderCodeBlock
(
node
*
ast
.
CodeBlock
)
{
func
(
r
*
HTMLRender
er
)
renderCodeBlock
(
node
*
ast
.
CodeBlock
)
{
r
.
output
.
WriteString
(
"<pre><code>"
)
r
.
output
.
WriteString
(
"<pre><code>"
)
r
.
output
.
WriteString
(
node
.
Content
)
r
.
output
.
WriteString
(
node
.
Content
)
r
.
output
.
WriteString
(
"</code></pre>"
)
r
.
output
.
WriteString
(
"</code></pre>"
)
}
}
func
(
r
*
HTMLRender
)
renderHeading
(
node
*
ast
.
Heading
)
{
func
(
r
*
HTMLRender
er
)
renderHeading
(
node
*
ast
.
Heading
)
{
element
:=
fmt
.
Sprintf
(
"h%d"
,
node
.
Level
)
element
:=
fmt
.
Sprintf
(
"h%d"
,
node
.
Level
)
r
.
output
.
WriteString
(
fmt
.
Sprintf
(
"<%s>"
,
element
))
r
.
output
.
WriteString
(
fmt
.
Sprintf
(
"<%s>"
,
element
))
r
.
RenderNodes
(
node
.
Children
)
r
.
RenderNodes
(
node
.
Children
)
r
.
output
.
WriteString
(
fmt
.
Sprintf
(
"</%s>"
,
element
))
r
.
output
.
WriteString
(
fmt
.
Sprintf
(
"</%s>"
,
element
))
}
}
func
(
r
*
HTMLRender
)
renderHorizontalRule
(
_
*
ast
.
HorizontalRule
)
{
func
(
r
*
HTMLRender
er
)
renderHorizontalRule
(
_
*
ast
.
HorizontalRule
)
{
r
.
output
.
WriteString
(
"<hr>"
)
r
.
output
.
WriteString
(
"<hr>"
)
}
}
func
(
r
*
HTMLRender
)
renderBlockquote
(
node
*
ast
.
Blockquote
)
{
func
(
r
*
HTMLRender
er
)
renderBlockquote
(
node
*
ast
.
Blockquote
)
{
prevSibling
,
nextSibling
:=
node
.
PrevSibling
(),
node
.
NextSibling
()
prevSibling
,
nextSibling
:=
node
.
PrevSibling
(),
node
.
NextSibling
()
if
prevSibling
==
nil
||
prevSibling
.
Type
()
!=
ast
.
BlockquoteNode
{
if
prevSibling
==
nil
||
prevSibling
.
Type
()
!=
ast
.
BlockquoteNode
{
r
.
output
.
WriteString
(
"<blockquote>"
)
r
.
output
.
WriteString
(
"<blockquote>"
)
...
@@ -119,7 +119,7 @@ func (r *HTMLRender) renderBlockquote(node *ast.Blockquote) {
...
@@ -119,7 +119,7 @@ func (r *HTMLRender) renderBlockquote(node *ast.Blockquote) {
}
}
}
}
func
(
r
*
HTMLRender
)
renderUnorderedList
(
node
*
ast
.
UnorderedList
)
{
func
(
r
*
HTMLRender
er
)
renderUnorderedList
(
node
*
ast
.
UnorderedList
)
{
prevSibling
,
nextSibling
:=
node
.
PrevSibling
(),
node
.
NextSibling
()
prevSibling
,
nextSibling
:=
node
.
PrevSibling
(),
node
.
NextSibling
()
if
prevSibling
==
nil
||
prevSibling
.
Type
()
!=
ast
.
UnorderedListNode
{
if
prevSibling
==
nil
||
prevSibling
.
Type
()
!=
ast
.
UnorderedListNode
{
r
.
output
.
WriteString
(
"<ul>"
)
r
.
output
.
WriteString
(
"<ul>"
)
...
@@ -132,7 +132,7 @@ func (r *HTMLRender) renderUnorderedList(node *ast.UnorderedList) {
...
@@ -132,7 +132,7 @@ func (r *HTMLRender) renderUnorderedList(node *ast.UnorderedList) {
}
}
}
}
func
(
r
*
HTMLRender
)
renderOrderedList
(
node
*
ast
.
OrderedList
)
{
func
(
r
*
HTMLRender
er
)
renderOrderedList
(
node
*
ast
.
OrderedList
)
{
prevSibling
,
nextSibling
:=
node
.
PrevSibling
(),
node
.
NextSibling
()
prevSibling
,
nextSibling
:=
node
.
PrevSibling
(),
node
.
NextSibling
()
if
prevSibling
==
nil
||
prevSibling
.
Type
()
!=
ast
.
OrderedListNode
{
if
prevSibling
==
nil
||
prevSibling
.
Type
()
!=
ast
.
OrderedListNode
{
r
.
output
.
WriteString
(
"<ol>"
)
r
.
output
.
WriteString
(
"<ol>"
)
...
@@ -145,35 +145,35 @@ func (r *HTMLRender) renderOrderedList(node *ast.OrderedList) {
...
@@ -145,35 +145,35 @@ func (r *HTMLRender) renderOrderedList(node *ast.OrderedList) {
}
}
}
}
func
(
r
*
HTMLRender
)
renderText
(
node
*
ast
.
Text
)
{
func
(
r
*
HTMLRender
er
)
renderText
(
node
*
ast
.
Text
)
{
r
.
output
.
WriteString
(
node
.
Content
)
r
.
output
.
WriteString
(
node
.
Content
)
}
}
func
(
r
*
HTMLRender
)
renderBold
(
node
*
ast
.
Bold
)
{
func
(
r
*
HTMLRender
er
)
renderBold
(
node
*
ast
.
Bold
)
{
r
.
output
.
WriteString
(
"<strong>"
)
r
.
output
.
WriteString
(
"<strong>"
)
r
.
RenderNodes
(
node
.
Children
)
r
.
RenderNodes
(
node
.
Children
)
r
.
output
.
WriteString
(
"</strong>"
)
r
.
output
.
WriteString
(
"</strong>"
)
}
}
func
(
r
*
HTMLRender
)
renderItalic
(
node
*
ast
.
Italic
)
{
func
(
r
*
HTMLRender
er
)
renderItalic
(
node
*
ast
.
Italic
)
{
r
.
output
.
WriteString
(
"<em>"
)
r
.
output
.
WriteString
(
"<em>"
)
r
.
output
.
WriteString
(
node
.
Content
)
r
.
output
.
WriteString
(
node
.
Content
)
r
.
output
.
WriteString
(
"</em>"
)
r
.
output
.
WriteString
(
"</em>"
)
}
}
func
(
r
*
HTMLRender
)
renderBoldItalic
(
node
*
ast
.
BoldItalic
)
{
func
(
r
*
HTMLRender
er
)
renderBoldItalic
(
node
*
ast
.
BoldItalic
)
{
r
.
output
.
WriteString
(
"<strong><em>"
)
r
.
output
.
WriteString
(
"<strong><em>"
)
r
.
output
.
WriteString
(
node
.
Content
)
r
.
output
.
WriteString
(
node
.
Content
)
r
.
output
.
WriteString
(
"</em></strong>"
)
r
.
output
.
WriteString
(
"</em></strong>"
)
}
}
func
(
r
*
HTMLRender
)
renderCode
(
node
*
ast
.
Code
)
{
func
(
r
*
HTMLRender
er
)
renderCode
(
node
*
ast
.
Code
)
{
r
.
output
.
WriteString
(
"<code>"
)
r
.
output
.
WriteString
(
"<code>"
)
r
.
output
.
WriteString
(
node
.
Content
)
r
.
output
.
WriteString
(
node
.
Content
)
r
.
output
.
WriteString
(
"</code>"
)
r
.
output
.
WriteString
(
"</code>"
)
}
}
func
(
r
*
HTMLRender
)
renderImage
(
node
*
ast
.
Image
)
{
func
(
r
*
HTMLRender
er
)
renderImage
(
node
*
ast
.
Image
)
{
r
.
output
.
WriteString
(
`<img src="`
)
r
.
output
.
WriteString
(
`<img src="`
)
r
.
output
.
WriteString
(
node
.
URL
)
r
.
output
.
WriteString
(
node
.
URL
)
r
.
output
.
WriteString
(
`" alt="`
)
r
.
output
.
WriteString
(
`" alt="`
)
...
@@ -181,7 +181,7 @@ func (r *HTMLRender) renderImage(node *ast.Image) {
...
@@ -181,7 +181,7 @@ func (r *HTMLRender) renderImage(node *ast.Image) {
r
.
output
.
WriteString
(
`" />`
)
r
.
output
.
WriteString
(
`" />`
)
}
}
func
(
r
*
HTMLRender
)
renderLink
(
node
*
ast
.
Link
)
{
func
(
r
*
HTMLRender
er
)
renderLink
(
node
*
ast
.
Link
)
{
r
.
output
.
WriteString
(
`<a href="`
)
r
.
output
.
WriteString
(
`<a href="`
)
r
.
output
.
WriteString
(
node
.
URL
)
r
.
output
.
WriteString
(
node
.
URL
)
r
.
output
.
WriteString
(
`">`
)
r
.
output
.
WriteString
(
`">`
)
...
@@ -189,20 +189,20 @@ func (r *HTMLRender) renderLink(node *ast.Link) {
...
@@ -189,20 +189,20 @@ func (r *HTMLRender) renderLink(node *ast.Link) {
r
.
output
.
WriteString
(
"</a>"
)
r
.
output
.
WriteString
(
"</a>"
)
}
}
func
(
r
*
HTMLRender
)
renderTag
(
node
*
ast
.
Tag
)
{
func
(
r
*
HTMLRender
er
)
renderTag
(
node
*
ast
.
Tag
)
{
r
.
output
.
WriteString
(
`<span>`
)
r
.
output
.
WriteString
(
`<span>`
)
r
.
output
.
WriteString
(
`#`
)
r
.
output
.
WriteString
(
`#`
)
r
.
output
.
WriteString
(
node
.
Content
)
r
.
output
.
WriteString
(
node
.
Content
)
r
.
output
.
WriteString
(
`</span>`
)
r
.
output
.
WriteString
(
`</span>`
)
}
}
func
(
r
*
HTMLRender
)
renderStrikethrough
(
node
*
ast
.
Strikethrough
)
{
func
(
r
*
HTMLRender
er
)
renderStrikethrough
(
node
*
ast
.
Strikethrough
)
{
r
.
output
.
WriteString
(
`<del>`
)
r
.
output
.
WriteString
(
`<del>`
)
r
.
output
.
WriteString
(
node
.
Content
)
r
.
output
.
WriteString
(
node
.
Content
)
r
.
output
.
WriteString
(
`</del>`
)
r
.
output
.
WriteString
(
`</del>`
)
}
}
func
(
r
*
HTMLRender
)
renderEscapingCharacter
(
node
*
ast
.
EscapingCharacter
)
{
func
(
r
*
HTMLRender
er
)
renderEscapingCharacter
(
node
*
ast
.
EscapingCharacter
)
{
r
.
output
.
WriteString
(
"
\\
"
)
r
.
output
.
WriteString
(
"
\\
"
)
r
.
output
.
WriteString
(
node
.
Symbol
)
r
.
output
.
WriteString
(
node
.
Symbol
)
}
}
plugin/gomark/render/html/html_test.go
→
plugin/gomark/render
er
/html/html_test.go
View file @
e8ca2ea5
...
@@ -9,7 +9,7 @@ import (
...
@@ -9,7 +9,7 @@ import (
"github.com/usememos/memos/plugin/gomark/parser/tokenizer"
"github.com/usememos/memos/plugin/gomark/parser/tokenizer"
)
)
func
TestHTMLRender
(
t
*
testing
.
T
)
{
func
TestHTMLRender
er
(
t
*
testing
.
T
)
{
tests
:=
[]
struct
{
tests
:=
[]
struct
{
text
string
text
string
expected
string
expected
string
...
@@ -60,7 +60,7 @@ func TestHTMLRender(t *testing.T) {
...
@@ -60,7 +60,7 @@ func TestHTMLRender(t *testing.T) {
tokens
:=
tokenizer
.
Tokenize
(
test
.
text
)
tokens
:=
tokenizer
.
Tokenize
(
test
.
text
)
nodes
,
err
:=
parser
.
Parse
(
tokens
)
nodes
,
err
:=
parser
.
Parse
(
tokens
)
require
.
NoError
(
t
,
err
)
require
.
NoError
(
t
,
err
)
actual
:=
NewHTMLRender
()
.
Render
(
nodes
)
actual
:=
NewHTMLRender
er
()
.
Render
(
nodes
)
require
.
Equal
(
t
,
test
.
expected
,
actual
)
require
.
Equal
(
t
,
test
.
expected
,
actual
)
}
}
}
}
plugin/gomark/renderer/renderer.go
0 → 100644
View file @
e8ca2ea5
package
renderer
import
(
htmlrenderer
"github.com/usememos/memos/plugin/gomark/renderer/html"
stringrenderer
"github.com/usememos/memos/plugin/gomark/renderer/string"
)
func
NewHTMLRenderer
()
*
htmlrenderer
.
HTMLRenderer
{
return
htmlrenderer
.
NewHTMLRenderer
()
}
func
NewStringRenderer
()
*
stringrenderer
.
StringRenderer
{
return
stringrenderer
.
NewStringRenderer
()
}
plugin/gomark/render/string/string.go
→
plugin/gomark/render
er
/string/string.go
View file @
e8ca2ea5
...
@@ -7,8 +7,8 @@ import (
...
@@ -7,8 +7,8 @@ import (
"github.com/usememos/memos/plugin/gomark/ast"
"github.com/usememos/memos/plugin/gomark/ast"
)
)
// StringRender renders AST to raw string.
// StringRender
er
renders AST to raw string.
type
StringRender
struct
{
type
StringRender
er
struct
{
output
*
bytes
.
Buffer
output
*
bytes
.
Buffer
context
*
RendererContext
context
*
RendererContext
}
}
...
@@ -16,16 +16,16 @@ type StringRender struct {
...
@@ -16,16 +16,16 @@ type StringRender struct {
type
RendererContext
struct
{
type
RendererContext
struct
{
}
}
// NewStringRender creates a new StringRender.
// NewStringRender
er
creates a new StringRender.
func
NewStringRender
()
*
StringRend
er
{
func
NewStringRender
er
()
*
StringRender
er
{
return
&
StringRender
{
return
&
StringRender
er
{
output
:
new
(
bytes
.
Buffer
),
output
:
new
(
bytes
.
Buffer
),
context
:
&
RendererContext
{},
context
:
&
RendererContext
{},
}
}
}
}
// RenderNode renders a single AST node to raw string.
// RenderNode renders a single AST node to raw string.
func
(
r
*
StringRender
)
RenderNode
(
node
ast
.
Node
)
{
func
(
r
*
StringRender
er
)
RenderNode
(
node
ast
.
Node
)
{
switch
n
:=
node
.
(
type
)
{
switch
n
:=
node
.
(
type
)
{
case
*
ast
.
LineBreak
:
case
*
ast
.
LineBreak
:
r
.
renderLineBreak
(
n
)
r
.
renderLineBreak
(
n
)
...
@@ -69,98 +69,98 @@ func (r *StringRender) RenderNode(node ast.Node) {
...
@@ -69,98 +69,98 @@ func (r *StringRender) RenderNode(node ast.Node) {
}
}
// RenderNodes renders a slice of AST nodes to raw string.
// RenderNodes renders a slice of AST nodes to raw string.
func
(
r
*
StringRender
)
RenderNodes
(
nodes
[]
ast
.
Node
)
{
func
(
r
*
StringRender
er
)
RenderNodes
(
nodes
[]
ast
.
Node
)
{
for
_
,
node
:=
range
nodes
{
for
_
,
node
:=
range
nodes
{
r
.
RenderNode
(
node
)
r
.
RenderNode
(
node
)
}
}
}
}
// Render renders the AST to raw string.
// Render renders the AST to raw string.
func
(
r
*
StringRender
)
Render
(
astRoot
[]
ast
.
Node
)
string
{
func
(
r
*
StringRender
er
)
Render
(
astRoot
[]
ast
.
Node
)
string
{
r
.
RenderNodes
(
astRoot
)
r
.
RenderNodes
(
astRoot
)
return
r
.
output
.
String
()
return
r
.
output
.
String
()
}
}
func
(
r
*
StringRender
)
renderLineBreak
(
_
*
ast
.
LineBreak
)
{
func
(
r
*
StringRender
er
)
renderLineBreak
(
_
*
ast
.
LineBreak
)
{
r
.
output
.
WriteString
(
"
\n
"
)
r
.
output
.
WriteString
(
"
\n
"
)
}
}
func
(
r
*
StringRender
)
renderParagraph
(
node
*
ast
.
Paragraph
)
{
func
(
r
*
StringRender
er
)
renderParagraph
(
node
*
ast
.
Paragraph
)
{
r
.
RenderNodes
(
node
.
Children
)
r
.
RenderNodes
(
node
.
Children
)
r
.
output
.
WriteString
(
"
\n
"
)
r
.
output
.
WriteString
(
"
\n
"
)
}
}
func
(
r
*
StringRender
)
renderCodeBlock
(
node
*
ast
.
CodeBlock
)
{
func
(
r
*
StringRender
er
)
renderCodeBlock
(
node
*
ast
.
CodeBlock
)
{
r
.
output
.
WriteString
(
node
.
Content
)
r
.
output
.
WriteString
(
node
.
Content
)
}
}
func
(
r
*
StringRender
)
renderHeading
(
node
*
ast
.
Heading
)
{
func
(
r
*
StringRender
er
)
renderHeading
(
node
*
ast
.
Heading
)
{
r
.
RenderNodes
(
node
.
Children
)
r
.
RenderNodes
(
node
.
Children
)
r
.
output
.
WriteString
(
"
\n
"
)
r
.
output
.
WriteString
(
"
\n
"
)
}
}
func
(
r
*
StringRender
)
renderHorizontalRule
(
_
*
ast
.
HorizontalRule
)
{
func
(
r
*
StringRender
er
)
renderHorizontalRule
(
_
*
ast
.
HorizontalRule
)
{
r
.
output
.
WriteString
(
"
\n
---
\n
"
)
r
.
output
.
WriteString
(
"
\n
---
\n
"
)
}
}
func
(
r
*
StringRender
)
renderBlockquote
(
node
*
ast
.
Blockquote
)
{
func
(
r
*
StringRender
er
)
renderBlockquote
(
node
*
ast
.
Blockquote
)
{
r
.
output
.
WriteString
(
"
\n
"
)
r
.
output
.
WriteString
(
"
\n
"
)
r
.
RenderNodes
(
node
.
Children
)
r
.
RenderNodes
(
node
.
Children
)
r
.
output
.
WriteString
(
"
\n
"
)
r
.
output
.
WriteString
(
"
\n
"
)
}
}
func
(
r
*
StringRender
)
renderUnorderedList
(
node
*
ast
.
UnorderedList
)
{
func
(
r
*
StringRender
er
)
renderUnorderedList
(
node
*
ast
.
UnorderedList
)
{
r
.
output
.
WriteString
(
node
.
Symbol
)
r
.
output
.
WriteString
(
node
.
Symbol
)
r
.
RenderNodes
(
node
.
Children
)
r
.
RenderNodes
(
node
.
Children
)
r
.
output
.
WriteString
(
"
\n
"
)
r
.
output
.
WriteString
(
"
\n
"
)
}
}
func
(
r
*
StringRender
)
renderOrderedList
(
node
*
ast
.
OrderedList
)
{
func
(
r
*
StringRender
er
)
renderOrderedList
(
node
*
ast
.
OrderedList
)
{
r
.
output
.
WriteString
(
fmt
.
Sprintf
(
"%s. "
,
node
.
Number
))
r
.
output
.
WriteString
(
fmt
.
Sprintf
(
"%s. "
,
node
.
Number
))
r
.
RenderNodes
(
node
.
Children
)
r
.
RenderNodes
(
node
.
Children
)
r
.
output
.
WriteString
(
"
\n
"
)
r
.
output
.
WriteString
(
"
\n
"
)
}
}
func
(
r
*
StringRender
)
renderText
(
node
*
ast
.
Text
)
{
func
(
r
*
StringRender
er
)
renderText
(
node
*
ast
.
Text
)
{
r
.
output
.
WriteString
(
node
.
Content
)
r
.
output
.
WriteString
(
node
.
Content
)
}
}
func
(
r
*
StringRender
)
renderBold
(
node
*
ast
.
Bold
)
{
func
(
r
*
StringRender
er
)
renderBold
(
node
*
ast
.
Bold
)
{
r
.
RenderNodes
(
node
.
Children
)
r
.
RenderNodes
(
node
.
Children
)
}
}
func
(
r
*
StringRender
)
renderItalic
(
node
*
ast
.
Italic
)
{
func
(
r
*
StringRender
er
)
renderItalic
(
node
*
ast
.
Italic
)
{
r
.
output
.
WriteString
(
node
.
Content
)
r
.
output
.
WriteString
(
node
.
Content
)
}
}
func
(
r
*
StringRender
)
renderBoldItalic
(
node
*
ast
.
BoldItalic
)
{
func
(
r
*
StringRender
er
)
renderBoldItalic
(
node
*
ast
.
BoldItalic
)
{
r
.
output
.
WriteString
(
node
.
Content
)
r
.
output
.
WriteString
(
node
.
Content
)
}
}
func
(
r
*
StringRender
)
renderCode
(
node
*
ast
.
Code
)
{
func
(
r
*
StringRender
er
)
renderCode
(
node
*
ast
.
Code
)
{
r
.
output
.
WriteString
(
"`"
)
r
.
output
.
WriteString
(
"`"
)
r
.
output
.
WriteString
(
node
.
Content
)
r
.
output
.
WriteString
(
node
.
Content
)
r
.
output
.
WriteString
(
"`"
)
r
.
output
.
WriteString
(
"`"
)
}
}
func
(
r
*
StringRender
)
renderImage
(
node
*
ast
.
Image
)
{
func
(
r
*
StringRender
er
)
renderImage
(
node
*
ast
.
Image
)
{
r
.
output
.
WriteString
(
node
.
AltText
)
r
.
output
.
WriteString
(
node
.
AltText
)
}
}
func
(
r
*
StringRender
)
renderLink
(
node
*
ast
.
Link
)
{
func
(
r
*
StringRender
er
)
renderLink
(
node
*
ast
.
Link
)
{
r
.
output
.
WriteString
(
node
.
Text
)
r
.
output
.
WriteString
(
node
.
Text
)
}
}
func
(
r
*
StringRender
)
renderTag
(
node
*
ast
.
Tag
)
{
func
(
r
*
StringRender
er
)
renderTag
(
node
*
ast
.
Tag
)
{
r
.
output
.
WriteString
(
`#`
)
r
.
output
.
WriteString
(
`#`
)
r
.
output
.
WriteString
(
node
.
Content
)
r
.
output
.
WriteString
(
node
.
Content
)
}
}
func
(
r
*
StringRender
)
renderStrikethrough
(
node
*
ast
.
Strikethrough
)
{
func
(
r
*
StringRender
er
)
renderStrikethrough
(
node
*
ast
.
Strikethrough
)
{
r
.
output
.
WriteString
(
node
.
Content
)
r
.
output
.
WriteString
(
node
.
Content
)
}
}
func
(
r
*
StringRender
)
renderEscapingCharacter
(
node
*
ast
.
EscapingCharacter
)
{
func
(
r
*
StringRender
er
)
renderEscapingCharacter
(
node
*
ast
.
EscapingCharacter
)
{
r
.
output
.
WriteString
(
"
\\
"
)
r
.
output
.
WriteString
(
"
\\
"
)
r
.
output
.
WriteString
(
node
.
Symbol
)
r
.
output
.
WriteString
(
node
.
Symbol
)
}
}
plugin/gomark/render/string/string_test.go
→
plugin/gomark/render
er
/string/string_test.go
View file @
e8ca2ea5
...
@@ -40,7 +40,7 @@ func TestStringRender(t *testing.T) {
...
@@ -40,7 +40,7 @@ func TestStringRender(t *testing.T) {
tokens
:=
tokenizer
.
Tokenize
(
test
.
text
)
tokens
:=
tokenizer
.
Tokenize
(
test
.
text
)
nodes
,
err
:=
parser
.
Parse
(
tokens
)
nodes
,
err
:=
parser
.
Parse
(
tokens
)
require
.
NoError
(
t
,
err
)
require
.
NoError
(
t
,
err
)
actual
:=
NewStringRender
()
.
Render
(
nodes
)
actual
:=
NewStringRender
er
()
.
Render
(
nodes
)
require
.
Equal
(
t
,
test
.
expected
,
actual
)
require
.
Equal
(
t
,
test
.
expected
,
actual
)
}
}
}
}
server/frontend/frontend.go
View file @
e8ca2ea5
...
@@ -14,7 +14,7 @@ import (
...
@@ -14,7 +14,7 @@ import (
"github.com/usememos/memos/internal/util"
"github.com/usememos/memos/internal/util"
"github.com/usememos/memos/plugin/gomark/parser"
"github.com/usememos/memos/plugin/gomark/parser"
"github.com/usememos/memos/plugin/gomark/parser/tokenizer"
"github.com/usememos/memos/plugin/gomark/parser/tokenizer"
"github.com/usememos/memos/plugin/gomark/render"
"github.com/usememos/memos/plugin/gomark/render
er
"
"github.com/usememos/memos/server/profile"
"github.com/usememos/memos/server/profile"
"github.com/usememos/memos/store"
"github.com/usememos/memos/store"
)
)
...
@@ -162,7 +162,7 @@ func generateMemoMetadata(memo *store.Memo, creator *store.User) string {
...
@@ -162,7 +162,7 @@ func generateMemoMetadata(memo *store.Memo, creator *store.User) string {
}
else
{
}
else
{
tokens
:=
tokenizer
.
Tokenize
(
memo
.
Content
)
tokens
:=
tokenizer
.
Tokenize
(
memo
.
Content
)
nodes
,
_
:=
parser
.
Parse
(
tokens
)
nodes
,
_
:=
parser
.
Parse
(
tokens
)
description
=
render
.
NewStringRend
er
()
.
Render
(
nodes
)
description
=
render
er
.
NewStringRender
er
()
.
Render
(
nodes
)
if
len
(
description
)
==
0
{
if
len
(
description
)
==
0
{
description
=
memo
.
Content
description
=
memo
.
Content
}
}
...
...
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