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",