Skip to content

Commit

Permalink
🎨 Vditor 支持 ToC 添加悬浮菜单及 bug 修复 Vanessa219/vditor#217
Browse files Browse the repository at this point in the history
  • Loading branch information
88250 committed Mar 11, 2020
1 parent fc65337 commit 732240b
Show file tree
Hide file tree
Showing 5 changed files with 16 additions and 14 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.

4 changes: 2 additions & 2 deletions render/html_renderer.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,15 +120,15 @@ func (r *HtmlRenderer) renderToC(node *ast.Node, entering bool) ast.WalkStatus {
if 1 > length {
return ast.WalkStop
}
r.WriteString("<div class=\"toc-div\">")
r.WriteString("<div class=\"vditor-toc\">")
for _, heading := range headings {
level := strconv.Itoa(heading.HeadingLevel)
spaces := (heading.HeadingLevel - 1) * 2
r.WriteString(strings.Repeat("&emsp;", spaces))
r.WriteString("<span class=\"toc-h" + level + "\">")
r.WriteString("<a class=\"toc-a\" href=\"#" + r.headingID(heading) + "\">" + heading.Text() + "</a></span><br>")
}
r.WriteString("</div>\n\n")
r.WriteString("</div>")
return ast.WalkStop
}

Expand Down
20 changes: 11 additions & 9 deletions render/vditor_renderer.go
Original file line number Diff line number Diff line change
Expand Up @@ -171,18 +171,20 @@ func (r *VditorRenderer) renderBackslash(node *ast.Node, entering bool) ast.Walk
func (r *VditorRenderer) renderToC(node *ast.Node, entering bool) ast.WalkStatus {
headings := r.headings()
length := len(headings)
if 1 > length {
return ast.WalkStop
}
r.WriteString("<div class=\"vditor-toc\" data-block=\"0\" data-type=\"toc-block\" contenteditable=\"false\">")
for _, heading := range headings {
spaces := (heading.HeadingLevel - 1) * 2
r.WriteString(strings.Repeat("&emsp;", spaces))
r.WriteString("<span data-type=\"toc-h\">")
r.WriteString(heading.Text() + "</span><br>")
if 0 < length {
for _, heading := range headings {
spaces := (heading.HeadingLevel - 1) * 2
r.WriteString(strings.Repeat("&emsp;", spaces))
r.WriteString("<span data-type=\"toc-h\">")
r.WriteString(heading.Text() + "</span><br>")
}
} else {
r.WriteString("[toc]<br>")
}
r.WriteString("</div><p data-block=\"0\">")
r.WriteString("</div>")
caretInDest := bytes.Contains(node.Tokens, []byte(parse.Caret))
r.WriteString("<p data-block=\"0\">")
if caretInDest {
r.WriteString(parse.Caret)
}
Expand Down
2 changes: 1 addition & 1 deletion test/toc_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import (

var tocTests = []parseTest{

{"0", "[toc]\n\n# 1\n\n## 1.1\n\n# 2\n", "<div class=\"toc-div\"><span class=\"toc-h1\"><a class=\"toc-a\" href=\"#1\">1</a></span><br>&emsp;&emsp;<span class=\"toc-h2\"><a class=\"toc-a\" href=\"#1-1\">1.1</a></span><br><span class=\"toc-h1\"><a class=\"toc-a\" href=\"#2\">2</a></span><br></div>\n\n<h1 id=\"1\">1</h1>\n<h2 id=\"1-1\">1.1</h2>\n<h1 id=\"2\">2</h1>\n"},
{"0", "[toc]\n\n# 1\n\n## 1.1\n\n# 2\n", "<div class=\"vditor-toc\"><span class=\"toc-h1\"><a class=\"toc-a\" href=\"#1\">1</a></span><br>&emsp;&emsp;<span class=\"toc-h2\"><a class=\"toc-a\" href=\"#1-1\">1.1</a></span><br><span class=\"toc-h1\"><a class=\"toc-a\" href=\"#2\">2</a></span><br></div>\n<h1 id=\"1\">1</h1>\n<h2 id=\"1-1\">1.1</h2>\n<h1 id=\"2\">2</h1>\n"},
}

func TestToC(t *testing.T) {
Expand Down

0 comments on commit 732240b

Please sign in to comment.