Skip to content

Commit

Permalink
🎨 Vditor 支持
Browse files Browse the repository at this point in the history
图片使用引用风格时的解析问题
Vanessa219/vditor#684
  • Loading branch information
88250 committed Aug 7, 2020
1 parent adf0549 commit 073e71b
Show file tree
Hide file tree
Showing 6 changed files with 16 additions and 9 deletions.
2 changes: 1 addition & 1 deletion javascript/lute.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion javascript/lute.min.js.map

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion render/vditor_ir_renderer.go
Original file line number Diff line number Diff line change
Expand Up @@ -654,7 +654,7 @@ func (r *VditorIRRenderer) renderCloseBracket(node *ast.Node, entering bool) ast

if 3 == node.Parent.LinkType {
linkText := node.Parent.ChildByType(ast.NodeLinkText)
if !bytes.EqualFold(node.Parent.LinkRefLabel, linkText.Tokens) {
if nil == linkText || !bytes.EqualFold(node.Parent.LinkRefLabel, linkText.Tokens) {
r.tag("span", [][]string{{"class", "vditor-ir__marker vditor-ir__marker--link"}}, false)
r.WriteByte(lex.ItemOpenBracket)
r.Write(node.Parent.LinkRefLabel)
Expand Down
2 changes: 1 addition & 1 deletion render/vditor_sv_renderer.go
Original file line number Diff line number Diff line change
Expand Up @@ -584,7 +584,7 @@ func (r *VditorSVRenderer) renderCloseBracket(node *ast.Node, entering bool) ast

if 3 == node.Parent.LinkType {
linkText := node.Parent.ChildByType(ast.NodeLinkText)
if !bytes.EqualFold(node.Parent.LinkRefLabel, linkText.Tokens) {
if nil == linkText || !bytes.EqualFold(node.Parent.LinkRefLabel, linkText.Tokens) {
r.tag("span", [][]string{{"class", "vditor-sv__marker--link"}}, false)
r.WriteByte(lex.ItemOpenBracket)
r.Write(node.Parent.LinkRefLabel)
Expand Down
15 changes: 10 additions & 5 deletions render/vditor_wysiwyg_renderer.go
Original file line number Diff line number Diff line change
Expand Up @@ -522,11 +522,15 @@ func (r *VditorRenderer) renderImage(node *ast.Node, entering bool) ast.WalkStat
if "" == previousNodeText {
r.WriteString(parse.Zwsp)
}
text := string(node.ChildByType(ast.NodeLinkText).Tokens)
text := node.ChildByType(ast.NodeLinkText)
var textContent string
if nil != text {
textContent = string(text.Tokens)
}
label := string(node.LinkRefLabel)
attrs := [][]string{{"data-type", "link-ref"}, {"data-link-label", label}}
r.tag("span", attrs, false)
r.WriteString(text)
r.WriteString(textContent)
r.tag("/span", nil, false)

r.WriteString("<img src=\"")
Expand All @@ -536,9 +540,10 @@ func (r *VditorRenderer) renderImage(node *ast.Node, entering bool) ast.WalkStat
destTokens = bytes.ReplaceAll(destTokens, util.CaretTokens, nil)
r.Write(destTokens)
r.WriteString("\" alt=\"")
alt := node.ChildByType(ast.NodeLinkText)
alt.Tokens = bytes.ReplaceAll(alt.Tokens, util.CaretTokens, nil)
r.Write(alt.Tokens)
if alt := node.ChildByType(ast.NodeLinkText);nil!= alt {
alt.Tokens = bytes.ReplaceAll(alt.Tokens, util.CaretTokens, nil)
r.Write(alt.Tokens)
}
r.WriteString("\"")
if title := link.ChildByType(ast.NodeLinkTitle); nil != title && nil != title.Tokens {
r.WriteString(" title=\"")
Expand Down
2 changes: 2 additions & 0 deletions test/m2v_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (

var md2VditorTests = []parseTest{

{"18", "![][foo]\n\n[foo]: bar", "<p data-block=\"0\">\u200b<span data-type=\"link-ref\" data-link-label=\"foo\"></span><img src=\"bar\" alt=\"\" data-render=\"2\"/></p><div data-block=\"0\" data-type=\"link-ref-defs-block\">[foo]: bar\n</div>"},
{"17", "![text][foo]\n\n[foo]: bar", "<p data-block=\"0\">\u200b<span data-type=\"link-ref\" data-link-label=\"foo\">text</span><img src=\"bar\" alt=\"text\" data-render=\"2\"/></p><div data-block=\"0\" data-type=\"link-ref-defs-block\">[foo]: bar\n</div>"},
{"16", "# heading {#custom-id}\n", "<h1 data-block=\"0\" data-id=\"#custom-id\" id=\"wysiwyg-#custom-id\" data-marker=\"#\">heading</h1>"},
{"15", "foo\n\n[^1]: 111\n\n[2]: 222\n", "<p data-block=\"0\">foo</p><div data-block=\"0\" data-type=\"link-ref-defs-block\">[2]: 222\n</div><div data-block=\"0\" data-type=\"footnotes-block\"><ol data-type=\"footnotes-defs-ol\"><li data-type=\"footnotes-li\" data-marker=\"^1\"><p data-block=\"0\">111</p></li></ol></div>"},
Expand Down Expand Up @@ -57,6 +58,7 @@ func TestMd2Vditor(t *testing.T) {

var md2VditorIRTests = []parseTest{

{"12", "![][foo]\n\n[foo]: bar", "<p data-block=\"0\"><span class=\"vditor-ir__node\" data-type=\"img\"><span class=\"vditor-ir__marker\">!</span><span class=\"vditor-ir__marker vditor-ir__marker--bracket\">[</span><span class=\"vditor-ir__marker vditor-ir__marker--bracket\">]</span><span class=\"vditor-ir__marker vditor-ir__marker--link\">[foo]</span><img src=\"bar\" /></span></p><div data-block=\"0\" data-type=\"link-ref-defs-block\">[foo]: bar\n</div>"},
{"11", "![text][foo]\n\n[foo]: bar", "<p data-block=\"0\"><span class=\"vditor-ir__node\" data-type=\"img\"><span class=\"vditor-ir__marker\">!</span><span class=\"vditor-ir__marker vditor-ir__marker--bracket\">[</span><span class=\"vditor-ir__marker vditor-ir__marker--bracket\">text</span><span class=\"vditor-ir__marker vditor-ir__marker--bracket\">]</span><span class=\"vditor-ir__marker vditor-ir__marker--link\">[foo]</span><img src=\"bar\" alt=\"text\" /></span></p><div data-block=\"0\" data-type=\"link-ref-defs-block\">[foo]: bar\n</div>"},
{"10", "[^foo]\n\n[^foo]:", "<p data-block=\"0\">\u200b<sup data-type=\"footnotes-ref\" class=\"vditor-ir__node vditor-tooltipped vditor-tooltipped__s\" aria-label=\"\" data-footnotes-label=\"^foo\"><span class=\"vditor-ir__marker vditor-ir__marker--bracket\">[</span><span class=\"vditor-ir__marker vditor-ir__marker--link\">^foo</span><span class=\"vditor-ir__marker--hide\" data-render=\"1\">1</span><span class=\"vditor-ir__marker vditor-ir__marker--bracket\">]</span></sup>\u200b</p><div data-block=\"0\" data-type=\"footnotes-block\"><div data-type=\"footnotes-def\">[^foo]: </div></div>"},
{"9", "# foo {id}", "<h1 data-block=\"0\" class=\"vditor-ir__node\" id=\"ir-id\" data-marker=\"#\"><span class=\"vditor-ir__marker vditor-ir__marker--heading\" data-type=\"heading-marker\"># </span>foo<span data-type=\"heading-id\" class=\"vditor-ir__marker\"> {id}</span></h1>"},
Expand Down

0 comments on commit 073e71b

Please sign in to comment.