From 57c094ee1562a1122fade87d8cee6bb89d8a526b Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Thu, 23 Jun 2022 10:53:00 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E6=94=AF=E6=8C=81=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E8=B6=85=E9=93=BE=E6=8E=A5=E5=85=83=E7=B4=A0=20URL=20Fix=20htt?= =?UTF-8?q?ps://github.com/siyuan-note/siyuan/issues/5273?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/sql/database.go | 18 +++++++++++++++++- kernel/treenode/node.go | 11 ++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/kernel/sql/database.go b/kernel/sql/database.go index 92ad086a3..0e913e08a 100644 --- a/kernel/sql/database.go +++ b/kernel/sql/database.go @@ -506,6 +506,22 @@ func buildSpanFromNode(n *ast.Node, tree *parse.Tree, rootID, boxID, p string) ( walkStatus = ast.WalkSkipChildren return case ast.NodeLinkDest: + text := n.TokensStr() + markdown := treenode.FormatNode(n.Parent, luteEngine) + parentBlock := treenode.ParentBlock(n) + span := &Span{ + ID: ast.NewNodeID(), + BlockID: parentBlock.ID, + RootID: rootID, + Box: boxID, + Path: p, + Content: text, + Markdown: markdown, + Type: treenode.TypeAbbr(n.Type.String()), + IAL: treenode.IALStr(n), + } + spans = append(spans, span) + // assetsLinkDestsInTree if !IsAssetLinkDest(n.Tokens) { @@ -514,7 +530,7 @@ func buildSpanFromNode(n *ast.Node, tree *parse.Tree, rootID, boxID, p string) ( } dest := gulu.Str.FromBytes(n.Tokens) - parentBlock := treenode.ParentBlock(n) + parentBlock = treenode.ParentBlock(n) var title string if titleNode := n.Parent.ChildByType(ast.NodeLinkTitle); nil != titleNode { title = gulu.Str.FromBytes(titleNode.Tokens) diff --git a/kernel/treenode/node.go b/kernel/treenode/node.go index 06295275a..f5aa75357 100644 --- a/kernel/treenode/node.go +++ b/kernel/treenode/node.go @@ -75,7 +75,15 @@ func NodeStaticContent(node *ast.Node) string { buf.WriteString(GetDynamicBlockRefText(n)) lastSpace = false return ast.WalkSkipChildren - case ast.NodeText, ast.NodeLinkText, ast.NodeLinkTitle, ast.NodeFileAnnotationRefText, ast.NodeFootnotesRef, + case ast.NodeLinkText: + buf.Write(n.Tokens) + buf.WriteByte(' ') + case ast.NodeLinkDest: + buf.Write(n.Tokens) + 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: buf.Write(n.Tokens) case ast.NodeBackslash: @@ -204,6 +212,7 @@ var typeAbbrMap = map[string]string{ // 行级元素 "NodeText": "text", "NodeLinkText": "link_text", + "NodeLinkDest": "link_dest", "NodeTag": "tag", "NodeCodeSpan": "code_span", "NodeInlineMath": "inline_math",