Skip to content

Commit

Permalink
🎨 Improve HTML code element clipping siyuan-note/siyuan#11401
Browse files Browse the repository at this point in the history
  • Loading branch information
88250 committed May 16, 2024
1 parent 3172f93 commit 64b3876
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 6 deletions.
14 changes: 11 additions & 3 deletions h2m.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,10 +120,18 @@ func (lute *Lute) genASTByDOM(n *html.Node, tree *parse.Tree) {
node.Type = ast.NodeLinkText
}
if lute.parentIs(n, atom.Table) {
if "" == strings.TrimSpace(n.Data) {
node.Tokens = []byte(" ")
tree.Context.Tip.AppendChild(node)
if "\n" == n.Data {
if nil == n.PrevSibling || nil == n.NextSibling {
break
}
tree.Context.Tip.AppendChild(&ast.Node{Type: ast.NodeBr})
break
} else {
if "" == strings.TrimSpace(n.Data) {
node.Tokens = []byte(" ")
tree.Context.Tip.AppendChild(node)
break
}
}
node.Tokens = bytes.TrimSpace(node.Tokens)
node.Tokens = bytes.ReplaceAll(node.Tokens, []byte("\n"), []byte(" "))
Expand Down
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.

3 changes: 2 additions & 1 deletion test/h2m_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (

var html2MdTests = []parseTest{

{"104", "<table class=\"docutils align-default\">\n<thead>\n<tr class=\"row-odd\">\n\n<th class=\"head\"><p>优势</p></th>\n\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\">\n\n<td><div class=\"line-block\">\n<div class=\"line\">- Python的内置标准库</div>\n<div class=\"line\">- 执行速度较快</div>\n<div class=\"line\">- 容错能力强</div>\n</div>\n</td>\n\n</tr>\n\n\n\n</tbody>\n</table>", "| 优势 |\n| ------------------------------------------------- |\n| - Python 的内置标准库<br />- 执行速度较快<br />- 容错能力强 |\n"},
{"103", "<code class=\"docutils literal notranslate\"><span class=\"pre\">BeautifulSoup(markup,</span> <span class=\"pre\">\"lxml\")</span></code>", "`BeautifulSoup(markup, \"lxml\")`\n"},
{"102", "<code><code class=\"idl\"><a data-link-type=\"idl\" href=\"#node\" id=\"ref-for-node③⑧\" aria-expanded=\"false\">Node</a></code> . <code class=\"idl\"><a data-link-type=\"idl\" href=\"#dom-node-element_node\" id=\"ref-for-dom-node-element_node①\">ELEMENT_NODE</a></code></code>", "[`Node`](#node) . [`ELEMENT_NODE`](#dom-node-element_node)\n"},
{"101", "<p><code class=\"idl\"><a data-link-type=\"idl\" href=\"#dom-event-capturing_phase\" id=\"ref-for-dom-event-capturing_phase\" aria-expanded=\"false\">CAPTURING_PHASE</a></code> to <code class=\"idl\"><a data-link-type=\"idl\" href=\"#dom-event-bubbling_phase\" id=\"ref-for-dom-event-bubbling_phase\">BUBBLING_PHASE</a></code> </p>", "[`CAPTURING_PHASE`](#dom-event-capturing_phase) to [`BUBBLING_PHASE`](#dom-event-bubbling_phase)\n"},
Expand All @@ -37,7 +38,7 @@ var html2MdTests = []parseTest{
{"87", "<h2 data-id=\"heading-4\">foo</h2><pre><div class=\"code-block-extension-header\"><div class=\"code-block-extension-headerLeft\"><div class=\"code-block-extension-foldBtn\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M16.924 9.617A1 1 0 0 0 16 9H8a1 1 0 0 0-.707 1.707l4 4a1 1 0 0 0 1.414 0l4-4a1 1 0 0 0 .217-1.09z\" data-name=\"Down\"></path></svg></div></div><div class=\"code-block-extension-headerRight\"><span class=\"code-block-extension-lang\">arduino</span><div class=\"code-block-extension-copyCodeBtn\">复制代码</div></div></div><code class=\"hljs language-arduino code-block-extension-codeShowNum\" lang=\"arduino\"><span class=\"code-block-extension-codeLine\" data-line-num=\"1\">bar</span>\n</code></pre><h2 data-id=\"heading-5\">baz</h2>", "## foo\n\n```arduino\nbar\n```\n\n## baz\n"},
{"86", "<img src=\"a_1.png\" >", "![](a_1.png)\n"},
{"85", "&lt;img src=\"a_1.png\" &gt;", "<img src=\"a\\_1.png\" >\n"},
{"84", "<table cellspacing=\"0\">\n<colgroup>\n<col style=\"width:10%;\">\n<col style=\"width:15%;\">\n<col style=\"width:75%;\">\n </colgroup>\n<thead>\n<tr>\n<th>符号</th>\n<th>意义</th>\n<th>说明</th>\n</tr>\n</thead><tbody>\n<tr>\n<td><code>\\n</code></td>\n<td>换行符</td>\n<td>表示文章的换行,这是一个不可见符号,在例子中,这个符号在 <code>_</code> 的位置。<p></p>\n<pre>aaa_<br>bbb</pre>\n<p> 你能够通过 <code>\\n</code> 找到换行符,但不能够插入换行符。要在替换结果中换行,需要用 <code>\\r</code>。\n </p></td>\n</tr>\n\n</tbody>\n</table>", "| 符号 | 意义 | 说明 |\n| ---------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `\\n` | 换行符 | 表示文章的换行,这是一个不可见符号,在例子中,这个符号在 `_` 的位置。 `aaa_`<br/>`bbb` 你能够通过 `\\n` 找到换行符,但不能够插入换行符。要在替换结果中换行,需要用 `\\r`。 |\n"},
{"84", "<table cellspacing=\"0\">\n<colgroup>\n<col style=\"width:10%;\">\n<col style=\"width:15%;\">\n<col style=\"width:75%;\">\n </colgroup>\n<thead>\n<tr>\n<th>符号</th>\n<th>意义</th>\n<th>说明</th>\n</tr>\n</thead><tbody>\n<tr>\n<td><code>\\n</code></td>\n<td>换行符</td>\n<td>表示文章的换行,这是一个不可见符号,在例子中,这个符号在 <code>_</code> 的位置。<p></p>\n<pre>aaa_<br>bbb</pre>\n<p> 你能够通过 <code>\\n</code> 找到换行符,但不能够插入换行符。要在替换结果中换行,需要用 <code>\\r</code>。\n </p></td>\n</tr>\n\n</tbody>\n</table>", "| 符号 | 意义 | 说明 |\n| ---------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `\\n` | 换行符 | 表示文章的换行,这是一个不可见符号,在例子中,这个符号在 `_` 的位置。<br />`aaa_`<br/>`bbb`<br />你能够通过 `\\n` 找到换行符,但不能够插入换行符。要在替换结果中换行,需要用 `\\r`。 |\n"},
{"83", "<table cellspacing=\"0\">\n<colgroup>\n<col style=\"width:10%;\">\n<col style=\"width:15%;\">\n<col style=\"width:75%;\">\n </colgroup>\n<thead>\n<tr>\n<th>符号</th>\n<th>意义</th>\n<th>说明</th>\n</tr>\n</thead><thead>\n</thead><tbody>\n<tr>\n<td><code>.</code></td>\n<td>任意一个字符</td>\n<td>最简单的元字符,匹配任意字符,但不包括换行符 <code>\\n</code>。</td>\n</tr>\n</tbody>\n</table>", "| 符号 | 意义 | 说明 |\n| --------- | -------------- | -------------------------------------------------------- |\n| `.` | 任意一个字符 | 最简单的元字符,匹配任意字符,但不包括换行符 `\\n`。 |\n"},
{"82", "<pre class=\"mb-4 mt-6 max-h-[650px] overflow-x-auto rounded border bg-[#1e1e1e]\"><pre style=\"color:#9CDCFE;background-color:#1E1E1E\" class=\"px-4 py-4 prism-code language-\"><div class=\"token-line\" style=\"color:#9CDCFE\"><span class=\"token plain\">foo</span></div><div class=\"token-line\" style=\"color:#9CDCFE\"><span class=\"token plain\">bar</span></div></pre></pre>", "```\nfoo\nbar\n```\n"},
{"81", "<pre data-tool=\"mdnice编辑器\" style=\"margin-top: 10px;margin-bottom: 10px;color: rgb(0, 0, 0);text-align: left;border-radius: 5px;box-shadow: rgba(0, 0, 0, 0.55) 0px 2px 10px;\"><section style=\"padding: 15px 16px 16px;overflow-x: auto;color: rgb(171, 178, 191);display: -webkit-box;font-family: &quot;Operator Mono&quot;, Consolas, Monaco, Menlo, monospace;background-color: rgb(40, 44, 52);border-radius: 5px;margin-top: 0px;\"><span style=\"letter-spacing: normal;font-size: 12px;\">setbit key offset value # 设置或者清空 key 的 value(字符串)在 offset 处的 bit 值<br>getbit key offset # 返回 key 对应的 string 在 offset 处的 bit 值 <br>bitcount key [start end] # start end 范围内被设置为1的数量,不传递 start end 默认全范围<br></span></section></pre>", "```\nsetbit key offset value # 设置或者清空 key 的 value(字符串)在 offset 处的 bit 值\ngetbit key offset # 返回 key 对应的 string 在 offset 处的 bit 值 \nbitcount key [start end] # start end 范围内被设置为1的数量,不传递 start end 默认全范围\n```\n"},
Expand Down

0 comments on commit 64b3876

Please sign in to comment.