diff --git a/kernel/model/export.go b/kernel/model/export.go index 3116662c9..9645c51ec 100644 --- a/kernel/model/export.go +++ b/kernel/model/export.go @@ -943,7 +943,7 @@ func exportMarkdownContent(id string) (hPath, exportedMd string) { } func processKaTexMacros(n *ast.Node) { - if ast.NodeInlineMathContent != n.Type && ast.NodeMathBlockContent != n.Type && ast.NodeTextMark != n.Type { + if ast.NodeMathBlockContent != n.Type && ast.NodeTextMark != n.Type { return } if ast.NodeTextMark == n.Type && !n.IsTextMarkType("inline-math") { @@ -1081,7 +1081,7 @@ func exportTree(tree *parse.Tree, wysiwyg, expandKaTexMacros, keepFold bool) (re case ast.NodeHeading: n.HeadingNormalizedID = n.IALAttr("id") n.ID = n.HeadingNormalizedID - case ast.NodeInlineMathContent, ast.NodeMathBlockContent: + case ast.NodeMathBlockContent: n.Tokens = bytes.TrimSpace(n.Tokens) // 导出 Markdown 时去除公式内容中的首尾空格 https://github.com/siyuan-note/siyuan/issues/4666 return ast.WalkContinue case ast.NodeTextMark: @@ -1216,7 +1216,7 @@ func exportTree(tree *parse.Tree, wysiwyg, expandKaTexMacros, keepFold bool) (re // 空的段落块需要补全文本展位,否则后续格式化后再解析树会语义不一致 https://github.com/siyuan-note/siyuan/issues/5806 emptyParagraphs = append(emptyParagraphs, n) } - case ast.NodeInlineMathContent, ast.NodeMathBlockContent: + case ast.NodeMathBlockContent: if expandKaTexMacros { processKaTexMacros(n) } diff --git a/kernel/model/format.go b/kernel/model/format.go index 8949de0b2..5c47369d0 100644 --- a/kernel/model/format.go +++ b/kernel/model/format.go @@ -46,8 +46,6 @@ func AutoSpace(rootID string) (err error) { ast.Walk(tree.Root, func(n *ast.Node, entering bool) ast.WalkStatus { if entering { switch n.Type { - case ast.NodeStrong, ast.NodeEmphasis, ast.NodeStrikethrough, ast.NodeUnderline: - luteEngine.MergeSameSpan(n) case ast.NodeTextMark: luteEngine.MergeSameTextMark(n) } diff --git a/kernel/model/render.go b/kernel/model/render.go index 1f826e313..c5976452e 100644 --- a/kernel/model/render.go +++ b/kernel/model/render.go @@ -55,7 +55,7 @@ func renderOutline(node *ast.Node, luteEngine *lute.Lute) (ret string) { buf.Write(tokens) case ast.NodeBackslashContent: buf.Write(n.Tokens) - case ast.NodeInlineMath, ast.NodeStrong, ast.NodeEmphasis, ast.NodeCodeSpan, ast.NodeTextMark, ast.NodeMark: + case ast.NodeTextMark: dom := lute.RenderNodeBlockDOM(n, luteEngine.ParseOptions, luteEngine.RenderOptions) buf.WriteString(dom) return ast.WalkSkipChildren diff --git a/kernel/model/search.go b/kernel/model/search.go index 206de3916..90e5bb4eb 100644 --- a/kernel/model/search.go +++ b/kernel/model/search.go @@ -215,7 +215,7 @@ func FindReplace(keyword, replacement string, ids []string, method int) (err err renameRoots = append(renameRoots, n) } } - case ast.NodeText, ast.NodeLinkDest, ast.NodeLinkText, ast.NodeLinkTitle, ast.NodeCodeSpanContent, ast.NodeCodeBlockCode, ast.NodeInlineMathContent, ast.NodeMathBlockContent: + case ast.NodeText, ast.NodeLinkDest, ast.NodeLinkText, ast.NodeLinkTitle, ast.NodeCodeBlockCode, ast.NodeMathBlockContent: if 0 == method { if bytes.Contains(n.Tokens, []byte(keyword)) { n.Tokens = bytes.ReplaceAll(n.Tokens, []byte(keyword), []byte(replacement)) diff --git a/kernel/model/transaction.go b/kernel/model/transaction.go index 384bdf708..fd2c69ac9 100644 --- a/kernel/model/transaction.go +++ b/kernel/model/transaction.go @@ -892,15 +892,10 @@ func (tx *Transaction) doUpdate(operation *Operation) (ret *TxErr) { return ast.WalkContinue } - if ast.NodeInlineMath == n.Type { - content := n.ChildByType(ast.NodeInlineMathContent) - if nil == content || 1 > len(content.Tokens) { - // 剔除空白的行级公式 - unlinks = append(unlinks, n) - } - } else if ast.NodeTextMark == n.Type { + if ast.NodeTextMark == n.Type { if n.IsTextMarkType("inline-math") { if "" == strings.TrimSpace(n.TextMarkInlineMathContent) { + // 剔除空白的行级公式 unlinks = append(unlinks, n) } } else if n.IsTextMarkType("block-ref") { diff --git a/kernel/sql/block_query.go b/kernel/sql/block_query.go index 88d5715dd..30730e395 100644 --- a/kernel/sql/block_query.go +++ b/kernel/sql/block_query.go @@ -657,7 +657,7 @@ func GetContainerText(container *ast.Node) string { } switch n.Type { case ast.NodeText, ast.NodeLinkText, ast.NodeFileAnnotationRefText, ast.NodeFootnotesRef, - ast.NodeCodeSpanContent, ast.NodeInlineMathContent, ast.NodeCodeBlockCode, ast.NodeMathBlockContent: + ast.NodeCodeBlockCode, ast.NodeMathBlockContent: buf.Write(n.Tokens) case ast.NodeTextMark: buf.WriteString(n.Content()) diff --git a/kernel/sql/database.go b/kernel/sql/database.go index 790f912cf..f5f589287 100644 --- a/kernel/sql/database.go +++ b/kernel/sql/database.go @@ -429,7 +429,7 @@ func resolveRefContent0(node *ast.Node, anchors *map[string]string, depth *int, buf.WriteString(n.IALAttr("title")) return ast.WalkStop case ast.NodeText, ast.NodeLinkText, ast.NodeLinkTitle, ast.NodeFileAnnotationRefText, ast.NodeFootnotesRef, - ast.NodeCodeSpanContent, ast.NodeInlineMathContent, ast.NodeCodeBlockCode, ast.NodeMathBlockContent: + ast.NodeCodeBlockCode, ast.NodeMathBlockContent: buf.Write(n.Tokens) case ast.NodeTextMark: if n.IsTextMarkType("tag") { @@ -618,21 +618,9 @@ func buildSpanFromNode(n *ast.Node, tree *parse.Tree, rootID, boxID, p string) ( } assets = append(assets, asset) return - case ast.NodeInlineMath, ast.NodeCodeSpan, ast.NodeEmphasis, ast.NodeStrong, ast.NodeStrikethrough, ast.NodeMark, ast.NodeSup, ast.NodeSub, ast.NodeKbd, ast.NodeUnderline, ast.NodeTextMark: - typ := treenode.TypeAbbr(n.Type.String()) - var text string - switch n.Type { - case ast.NodeEmphasis, ast.NodeStrong, ast.NodeStrikethrough, ast.NodeMark, ast.NodeSup, ast.NodeSub, ast.NodeKbd, ast.NodeUnderline: - text = n.Text() - case ast.NodeInlineMath: - text = n.ChildByType(ast.NodeInlineMathContent).TokensStr() - case ast.NodeCodeSpan: - text = n.ChildByType(ast.NodeCodeSpanContent).TokensStr() - case ast.NodeTextMark: - text = n.Content() - typ = typ + " " + n.TextMarkType - } - + case ast.NodeTextMark: + typ := treenode.TypeAbbr(n.Type.String()) + " " + n.TextMarkType + text := n.Content() markdown := treenode.ExportNodeStdMd(n, luteEngine) parentBlock := treenode.ParentBlock(n) span := &Span{ diff --git a/kernel/treenode/node.go b/kernel/treenode/node.go index 52d073a69..b1dd3bedd 100644 --- a/kernel/treenode/node.go +++ b/kernel/treenode/node.go @@ -138,8 +138,7 @@ func NodeStaticContent(node *ast.Node) string { buf.WriteByte(' ') case ast.NodeLinkTitle: buf.Write(n.Tokens) - case ast.NodeText, ast.NodeFileAnnotationRefText, ast.NodeFootnotesRef, - ast.NodeCodeSpanContent, ast.NodeInlineMathContent, ast.NodeCodeBlockCode, ast.NodeMathBlockContent, ast.NodeHTMLBlock: + case ast.NodeText, ast.NodeFileAnnotationRefText, ast.NodeFootnotesRef, ast.NodeCodeBlockCode, ast.NodeMathBlockContent, ast.NodeHTMLBlock: tokens := n.Tokens if IsChartCodeBlockCode(n) { // 图表块的内容在数据库 `blocks` 表 `content` 字段中被转义 https://github.com/siyuan-note/siyuan/issues/6326 @@ -284,24 +283,13 @@ var typeAbbrMap = map[string]string{ "NodeThematicBreak": "tb", "NodeVideo": "video", "NodeAudio": "audio", - // 行级元素 - "NodeText": "text", - "NodeImage": "img", - "NodeLinkText": "link_text", - "NodeLinkDest": "link_dest", - "NodeTag": "tag", - "NodeCodeSpan": "code_span", - "NodeInlineMath": "inline_math", - "NodeBlockRefID": "ref_id", - "NodeEmphasis": "em", - "NodeStrong": "strong", - "NodeStrikethrough": "strikethrough", - "NodeMark": "mark", - "NodeSup": "sup", - "NodeSub": "sub", - "NodeKbd": "kbd", - "NodeUnderline": "underline", - "NodeTextMark": "textmark", + // 行级元素 TODO: 移除旧版中的行级元素实现代码 https://github.com/siyuan-note/siyuan/issues/6819 + "NodeText": "text", + "NodeImage": "img", + "NodeLinkText": "link_text", + "NodeLinkDest": "link_dest", + "NodeBlockRefID": "ref_id", + "NodeTextMark": "textmark", } var abbrTypeMap = map[string]string{}