Skip to content

Commit

Permalink
🎨 Vditor 支持
Browse files Browse the repository at this point in the history
重构 SV 模式 DOM
Vanessa219/vditor#580
  • Loading branch information
88250 committed Jul 16, 2020
1 parent 2d6f193 commit ed1f268
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 10 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.

6 changes: 3 additions & 3 deletions parse/blocks.go
Original file line number Diff line number Diff line change
Expand Up @@ -251,8 +251,8 @@ var blockStarts = []blockStartFunc{
t.Context.advanceOffset(1, true)
markers = append(markers, whitespace)
}
if (t.Context.Option.VditorWYSIWYG || t.Context.Option.VditorIR) && !t.Context.Option.VditorSV {
// Vditor 所见即所得模式下块引用标记符 > 后面不能为空,但分屏预览模式可以
if t.Context.Option.VditorWYSIWYG || t.Context.Option.VditorIR || t.Context.Option.VditorSV {
// Vditor 三个模式都不能存在空的块引用
ln := util.BytesToStr(t.Context.currentLine[t.Context.offset:])
ln = strings.ReplaceAll(ln, util.Caret, "")
if ln = strings.TrimSpace(ln); "" == ln {
Expand All @@ -271,7 +271,7 @@ var blockStarts = []blockStartFunc{
// 判断 ATX 标题(#)是否开始
func(t *Tree, container *ast.Node) int {
if !t.Context.indented {
if ok, markers, content, level:= t.parseATXHeading(); ok {
if ok, markers, content, level := t.parseATXHeading(); ok {
t.Context.advanceNextNonspace()
t.Context.advanceOffset(len(content), false)
t.Context.closeUnmatchedBlocks()
Expand Down
11 changes: 6 additions & 5 deletions test/spinv_sv_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (

var spinVditorSVDOMTests = []*parseTest{

{"47", "> \n‸", "<span data-type=\"text\">&gt;</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"text\"><wbr></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span>"},
{"46", "foo\n\n## bar‸", "<span data-type=\"text\">foo</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span class=\"vditor-sv__marker--heading h2\" data-type=\"heading-marker\">## </span><span data-type=\"text\" class=\"h2\">bar<wbr></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span>"},
{"45", "**foo**\n\n*bar‸*", "<span class=\"vditor-sv__marker--bi strong\">**</span><span data-type=\"text\" class=\"strong\">foo</span><span class=\"vditor-sv__marker--bi strong\">**</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span class=\"vditor-sv__marker--bi em\">*</span><span data-type=\"text\" class=\"em\">bar<wbr></span><span class=\"vditor-sv__marker--bi em\">*</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span>"},
{"44", "> foo\n> \n> ```\n> bar\n> ‸\n> ```", "<span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"text\">foo</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"code-block-open-marker\" class=\"vditor-sv__marker\">```</span><span class=\"vditor-sv__marker--info\" data-type=\"code-block-info\"></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"text\">bar\n<span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><wbr></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"code-block-close-marker\" class=\"vditor-sv__marker\">```</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span>"},
Expand All @@ -35,10 +36,10 @@ var spinVditorSVDOMTests = []*parseTest{
{"32", "# foo {id‸}", "<span class=\"vditor-sv__marker--heading h1\" data-type=\"heading-marker\"># </span><span data-type=\"text\" class=\"h1\">foo</span><span class=\"vditor-sv__marker h1\"> {id<wbr>}</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span>"},
{"31", "# foo {id}‸", "<span class=\"vditor-sv__marker--heading h1\" data-type=\"heading-marker\"># </span><span data-type=\"text\" class=\"h1\">foo</span><span class=\"vditor-sv__marker h1\"> {id}</span><span data-type=\"text\" class=\"h1\"><wbr></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span>"},
{"30", "```\nfoo\n```‸", "<span data-type=\"code-block-open-marker\" class=\"vditor-sv__marker\">```</span><span class=\"vditor-sv__marker--info\" data-type=\"code-block-info\"></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"text\">foo<wbr></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"code-block-close-marker\" class=\"vditor-sv__marker\">```</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span>"},
{"29", "> foo\n> >‸\n", "<span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"text\">foo</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"text\"><wbr></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span>"},
{"28", "> >‸", "<span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"text\"><wbr></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span>"},
{"27", "这里是一个脚注引用[^1],这里是另一个脚注引用[^bignote]。\n\n[^1]: 第一个脚注定义。\n[^bignote]: 脚注定义可使用多段内容。\n\n 缩进对齐的段落包含在这个脚注定义内。‸\n", "<span data-type=\"text\">这里是一个脚注引用</span><span class=\"sup\"><span class=\"vditor-sv__marker--bracket\">[</span><span class=\"vditor-sv__marker--link\">^1</span><span class=\"vditor-sv__marker--bracket\">]</span></span><span data-type=\"text\">,这里是另一个脚注引用</span><span class=\"sup\"><span class=\"vditor-sv__marker--bracket\">[</span><span class=\"vditor-sv__marker--link\">^bignote</span><span class=\"vditor-sv__marker--bracket\">]</span></span><span data-type=\"text\">。</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-block=\"0\" data-type=\"footnotes-block\"><span data-type=\"footnotes-def\"><span class=\"vditor-sv__marker--bracket\">[</span><span class=\"vditor-sv__marker--link\" data-type=\"footnotes-link\">^1</span><span class=\"vditor-sv__marker--bracket\">]</span>: <span data-type=\"text\">第一个脚注定义。</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span></span><span data-type=\"footnotes-def\"><span class=\"vditor-sv__marker--bracket\">[</span><span class=\"vditor-sv__marker--link\" data-type=\"footnotes-link\">^bignote</span><span class=\"vditor-sv__marker--bracket\">]</span>: <span data-type=\"text\">脚注定义可使用多段内容。</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"footnotes-space\"> </span><span data-type=\"text\">缩进对齐的段落包含在这个脚注定义内。<wbr></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span></span></span>"},
{"26", "|foo|bar|\n| ---| ---|\n|‸", "<span data-block=\"0\" data-type=\"table\">|foo|bar|\n| ---| ---|\n|<wbr><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span></span>"},
{"29", "> foo\n> >‸\n", "<span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"text\">foo</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"text\">&gt;<wbr></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span>"},
{"28", "> >‸", "<span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"text\">&gt;<wbr></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span>"},
{"27", "这里是一个脚注引用[^1],这里是另一个脚注引用[^bignote]。\n\n[^1]: 第一个脚注定义。\n[^bignote]: 脚注定义可使用多段内容。\n\n 缩进对齐的段落包含在这个脚注定义内。‸\n", "<span data-type=\"text\">这里是一个脚注引用</span><span class=\"sup\"><span class=\"vditor-sv__marker--bracket\">[</span><span class=\"vditor-sv__marker--link\">^1</span><span class=\"vditor-sv__marker--bracket\">]</span></span><span data-type=\"text\">,这里是另一个脚注引用</span><span class=\"sup\"><span class=\"vditor-sv__marker--bracket\">[</span><span class=\"vditor-sv__marker--link\">^bignote</span><span class=\"vditor-sv__marker--bracket\">]</span></span><span data-type=\"text\">。</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"footnotes-block\"><span data-type=\"footnotes-def\"><span class=\"vditor-sv__marker--bracket\">[</span><span class=\"vditor-sv__marker--link\" data-type=\"footnotes-link\">^1</span><span class=\"vditor-sv__marker--bracket\">]</span>: <span data-type=\"text\">第一个脚注定义。</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span></span><span data-type=\"footnotes-def\"><span class=\"vditor-sv__marker--bracket\">[</span><span class=\"vditor-sv__marker--link\" data-type=\"footnotes-link\">^bignote</span><span class=\"vditor-sv__marker--bracket\">]</span>: <span data-type=\"text\">脚注定义可使用多段内容。</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"footnotes-space\"> </span><span data-type=\"text\">缩进对齐的段落包含在这个脚注定义内。<wbr></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span></span></span>"},
{"26", "|foo|bar|\n| ---| ---|\n|‸", "<span data-type=\"table\">|foo|bar|\n| ---| ---|\n|<wbr><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span></span>"},
{"25", "‸", "<span data-type=\"text\"><wbr></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span>"},
{"24", "> * f‸\n> \n", "<span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"li-marker\" class=\"vditor-sv__marker\">* </span><span data-type=\"text\">f<wbr></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span>"},
{"23", "> ## foo\n> \n> * b‸", "<span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span class=\"vditor-sv__marker--heading h2\" data-type=\"heading-marker\">## </span><span data-type=\"text\" class=\"h2\">foo</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"li-marker\" class=\"vditor-sv__marker\">* </span><span data-type=\"text\">b<wbr></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span>"},
Expand All @@ -57,7 +58,7 @@ var spinVditorSVDOMTests = []*parseTest{
{"10", "* foo\n * ba‸", "<span data-type=\"li-marker\" class=\"vditor-sv__marker\">* </span><span data-type=\"text\">foo</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"padding\"> </span><span data-type=\"li-marker\" class=\"vditor-sv__marker\">* </span><span data-type=\"text\">ba<wbr></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span>"},
{"9", "* foo\n‸", "<span data-type=\"li-marker\" class=\"vditor-sv__marker\">* </span><span data-type=\"text\">foo</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"padding\"> </span><span data-type=\"text\"><wbr></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span>"},
{"8", "> foo\n> \n> bar‸", "<span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"text\">foo</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"text\">bar<wbr></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span>"},
{"7", "* foo\n >‸", "<span data-type=\"li-marker\" class=\"vditor-sv__marker\">* </span><span data-type=\"text\">foo</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"padding\"> </span><span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"text\"><wbr></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span>"},
{"7", "* foo\n >‸", "<span data-type=\"li-marker\" class=\"vditor-sv__marker\">* </span><span data-type=\"text\">foo</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"padding\"> </span><span data-type=\"text\">&gt;<wbr></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span>"},
{"6", "* foo‸", "<span data-type=\"li-marker\" class=\"vditor-sv__marker\">* </span><span data-type=\"text\">foo<wbr></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span>"},
{"5", "> * foo\n> > bar\n> > b‸ ", "<span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"li-marker\" class=\"vditor-sv__marker\">* </span><span data-type=\"text\">foo</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"padding\"> </span><span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"text\">bar</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"padding\"> </span><span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"text\">b<wbr></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span>"},
{"4", "> * foo\n> > b‸", "<span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"li-marker\" class=\"vditor-sv__marker\">* </span><span data-type=\"text\">foo</span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"padding\"> </span><span data-type=\"blockquote-marker\" class=\"vditor-sv__marker\">&gt; </span><span data-type=\"text\">b<wbr></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span><span data-type=\"newline\"><br /><span style=\"display: none\">\n</span></span>"},
Expand Down

0 comments on commit ed1f268

Please sign in to comment.