mirror of
https://github.com/usememos/memos.git
synced 2025-06-05 22:09:59 +02:00
chore: rename renderer package
This commit is contained in:
@ -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/renderer"
|
||||||
"github.com/usememos/memos/store"
|
"github.com/usememos/memos/store"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -198,7 +198,7 @@ func getRSSItemDescription(content string) (string, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
result := render.NewHTMLRender().Render(nodes)
|
result := renderer.NewHTMLRenderer().Render(nodes)
|
||||||
return result, nil
|
return result, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,14 +0,0 @@
|
|||||||
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()
|
|
||||||
}
|
|
@ -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.
|
// HTMLRenderer is a simple renderer that converts AST to HTML.
|
||||||
type HTMLRender struct {
|
type HTMLRenderer struct {
|
||||||
output *bytes.Buffer
|
output *bytes.Buffer
|
||||||
context *RendererContext
|
context *RendererContext
|
||||||
}
|
}
|
||||||
@ -16,16 +16,16 @@ type HTMLRender struct {
|
|||||||
type RendererContext struct {
|
type RendererContext struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewHTMLRender creates a new HTMLRender.
|
// NewHTMLRenderer creates a new HTMLRender.
|
||||||
func NewHTMLRender() *HTMLRender {
|
func NewHTMLRenderer() *HTMLRenderer {
|
||||||
return &HTMLRender{
|
return &HTMLRenderer{
|
||||||
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 *HTMLRenderer) 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) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 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 *HTMLRenderer) 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 *HTMLRenderer) 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 *HTMLRenderer) renderLineBreak(_ *ast.LineBreak) {
|
||||||
r.output.WriteString("<br>")
|
r.output.WriteString("<br>")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *HTMLRender) renderParagraph(node *ast.Paragraph) {
|
func (r *HTMLRenderer) 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 *HTMLRenderer) 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 *HTMLRenderer) 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 *HTMLRenderer) renderHorizontalRule(_ *ast.HorizontalRule) {
|
||||||
r.output.WriteString("<hr>")
|
r.output.WriteString("<hr>")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *HTMLRender) renderBlockquote(node *ast.Blockquote) {
|
func (r *HTMLRenderer) 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) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *HTMLRender) renderUnorderedList(node *ast.UnorderedList) {
|
func (r *HTMLRenderer) 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) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *HTMLRender) renderOrderedList(node *ast.OrderedList) {
|
func (r *HTMLRenderer) 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) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *HTMLRender) renderText(node *ast.Text) {
|
func (r *HTMLRenderer) renderText(node *ast.Text) {
|
||||||
r.output.WriteString(node.Content)
|
r.output.WriteString(node.Content)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *HTMLRender) renderBold(node *ast.Bold) {
|
func (r *HTMLRenderer) 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 *HTMLRenderer) 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 *HTMLRenderer) 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 *HTMLRenderer) 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 *HTMLRenderer) 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) {
|
|||||||
r.output.WriteString(`" />`)
|
r.output.WriteString(`" />`)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *HTMLRender) renderLink(node *ast.Link) {
|
func (r *HTMLRenderer) 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) {
|
|||||||
r.output.WriteString("</a>")
|
r.output.WriteString("</a>")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *HTMLRender) renderTag(node *ast.Tag) {
|
func (r *HTMLRenderer) 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 *HTMLRenderer) 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 *HTMLRenderer) renderEscapingCharacter(node *ast.EscapingCharacter) {
|
||||||
r.output.WriteString("\\")
|
r.output.WriteString("\\")
|
||||||
r.output.WriteString(node.Symbol)
|
r.output.WriteString(node.Symbol)
|
||||||
}
|
}
|
@ -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 TestHTMLRenderer(t *testing.T) {
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
text string
|
text string
|
||||||
expected string
|
expected string
|
||||||
@ -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 := NewHTMLRenderer().Render(nodes)
|
||||||
require.Equal(t, test.expected, actual)
|
require.Equal(t, test.expected, actual)
|
||||||
}
|
}
|
||||||
}
|
}
|
14
plugin/gomark/renderer/renderer.go
Normal file
14
plugin/gomark/renderer/renderer.go
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
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()
|
||||||
|
}
|
@ -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.
|
// StringRenderer renders AST to raw string.
|
||||||
type StringRender struct {
|
type StringRenderer struct {
|
||||||
output *bytes.Buffer
|
output *bytes.Buffer
|
||||||
context *RendererContext
|
context *RendererContext
|
||||||
}
|
}
|
||||||
@ -16,16 +16,16 @@ type StringRender struct {
|
|||||||
type RendererContext struct {
|
type RendererContext struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewStringRender creates a new StringRender.
|
// NewStringRenderer creates a new StringRender.
|
||||||
func NewStringRender() *StringRender {
|
func NewStringRenderer() *StringRenderer {
|
||||||
return &StringRender{
|
return &StringRenderer{
|
||||||
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 *StringRenderer) 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) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 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 *StringRenderer) 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 *StringRenderer) 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 *StringRenderer) renderLineBreak(_ *ast.LineBreak) {
|
||||||
r.output.WriteString("\n")
|
r.output.WriteString("\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *StringRender) renderParagraph(node *ast.Paragraph) {
|
func (r *StringRenderer) 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 *StringRenderer) renderCodeBlock(node *ast.CodeBlock) {
|
||||||
r.output.WriteString(node.Content)
|
r.output.WriteString(node.Content)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *StringRender) renderHeading(node *ast.Heading) {
|
func (r *StringRenderer) 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 *StringRenderer) renderHorizontalRule(_ *ast.HorizontalRule) {
|
||||||
r.output.WriteString("\n---\n")
|
r.output.WriteString("\n---\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *StringRender) renderBlockquote(node *ast.Blockquote) {
|
func (r *StringRenderer) 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 *StringRenderer) 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 *StringRenderer) 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 *StringRenderer) renderText(node *ast.Text) {
|
||||||
r.output.WriteString(node.Content)
|
r.output.WriteString(node.Content)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *StringRender) renderBold(node *ast.Bold) {
|
func (r *StringRenderer) renderBold(node *ast.Bold) {
|
||||||
r.RenderNodes(node.Children)
|
r.RenderNodes(node.Children)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *StringRender) renderItalic(node *ast.Italic) {
|
func (r *StringRenderer) renderItalic(node *ast.Italic) {
|
||||||
r.output.WriteString(node.Content)
|
r.output.WriteString(node.Content)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *StringRender) renderBoldItalic(node *ast.BoldItalic) {
|
func (r *StringRenderer) renderBoldItalic(node *ast.BoldItalic) {
|
||||||
r.output.WriteString(node.Content)
|
r.output.WriteString(node.Content)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *StringRender) renderCode(node *ast.Code) {
|
func (r *StringRenderer) 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 *StringRenderer) renderImage(node *ast.Image) {
|
||||||
r.output.WriteString(node.AltText)
|
r.output.WriteString(node.AltText)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *StringRender) renderLink(node *ast.Link) {
|
func (r *StringRenderer) renderLink(node *ast.Link) {
|
||||||
r.output.WriteString(node.Text)
|
r.output.WriteString(node.Text)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *StringRender) renderTag(node *ast.Tag) {
|
func (r *StringRenderer) 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 *StringRenderer) renderStrikethrough(node *ast.Strikethrough) {
|
||||||
r.output.WriteString(node.Content)
|
r.output.WriteString(node.Content)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *StringRender) renderEscapingCharacter(node *ast.EscapingCharacter) {
|
func (r *StringRenderer) renderEscapingCharacter(node *ast.EscapingCharacter) {
|
||||||
r.output.WriteString("\\")
|
r.output.WriteString("\\")
|
||||||
r.output.WriteString(node.Symbol)
|
r.output.WriteString(node.Symbol)
|
||||||
}
|
}
|
@ -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 := NewStringRenderer().Render(nodes)
|
||||||
require.Equal(t, test.expected, actual)
|
require.Equal(t, test.expected, actual)
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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/renderer"
|
||||||
"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 {
|
|||||||
} else {
|
} else {
|
||||||
tokens := tokenizer.Tokenize(memo.Content)
|
tokens := tokenizer.Tokenize(memo.Content)
|
||||||
nodes, _ := parser.Parse(tokens)
|
nodes, _ := parser.Parse(tokens)
|
||||||
description = render.NewStringRender().Render(nodes)
|
description = renderer.NewStringRenderer().Render(nodes)
|
||||||
if len(description) == 0 {
|
if len(description) == 0 {
|
||||||
description = memo.Content
|
description = memo.Content
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user