mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-05-02 18:20:26 +08:00
🎨 Improve list item, super block and blockquote backlink propagation https://github.com/siyuan-note/siyuan/issues/13776
This commit is contained in:
parent
58c257960b
commit
1d77cdefc2
@ -588,18 +588,41 @@ func buildLinkRefs(defRootID string, refs []*sql.Ref, keywords []string) (ret []
|
|||||||
sqlParagraphParents := sql.GetBlocks(paragraphParentIDs)
|
sqlParagraphParents := sql.GetBlocks(paragraphParentIDs)
|
||||||
paragraphParents := fromSQLBlocks(&sqlParagraphParents, "", 12)
|
paragraphParents := fromSQLBlocks(&sqlParagraphParents, "", 12)
|
||||||
|
|
||||||
|
luteEngine := util.NewLute()
|
||||||
originalRefBlockIDs = map[string]string{}
|
originalRefBlockIDs = map[string]string{}
|
||||||
processedParagraphs := hashset.New()
|
processedParagraphs := hashset.New()
|
||||||
for _, parent := range paragraphParents {
|
for _, parent := range paragraphParents {
|
||||||
if "NodeListItem" == parent.Type || "NodeBlockquote" == parent.Type || "NodeSuperBlock" == parent.Type {
|
if "NodeListItem" == parent.Type || "NodeBlockquote" == parent.Type || "NodeSuperBlock" == parent.Type {
|
||||||
|
paragraphUseParentLi := true
|
||||||
if refBlock := parentRefParagraphs[parent.ID]; nil != refBlock {
|
if refBlock := parentRefParagraphs[parent.ID]; nil != refBlock {
|
||||||
processedParagraphs.Add(parent.ID)
|
if "NodeListItem" == parent.Type && parent.FContent != refBlock.Content {
|
||||||
|
if inlineTree := parse.Inline("", []byte(refBlock.Markdown), luteEngine.ParseOptions); nil != inlineTree {
|
||||||
|
for c := inlineTree.Root.FirstChild.FirstChild; c != nil; c = c.Next {
|
||||||
|
if treenode.IsBlockRef(c) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if "" != strings.TrimSpace(c.Text()) {
|
||||||
|
paragraphUseParentLi = false
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if paragraphUseParentLi {
|
||||||
|
processedParagraphs.Add(parent.ID)
|
||||||
|
}
|
||||||
|
|
||||||
originalRefBlockIDs[parent.ID] = refBlock.ID
|
originalRefBlockIDs[parent.ID] = refBlock.ID
|
||||||
if !matchBacklinkKeyword(parent, keywords) {
|
if !matchBacklinkKeyword(parent, keywords) {
|
||||||
refsCount--
|
refsCount--
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
ret = append(ret, parent)
|
|
||||||
|
if paragraphUseParentLi {
|
||||||
|
ret = append(ret, parent)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -100,7 +100,7 @@ func IsBlockRef(n *ast.Node) bool {
|
|||||||
if nil == n {
|
if nil == n {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
return ast.NodeTextMark == n.Type && n.IsTextMarkType("block-ref")
|
return (ast.NodeTextMark == n.Type && n.IsTextMarkType("block-ref")) || ast.NodeBlockRef == n.Type
|
||||||
}
|
}
|
||||||
|
|
||||||
func IsBlockLink(n *ast.Node) bool {
|
func IsBlockLink(n *ast.Node) bool {
|
||||||
|
Loading…
Reference in New Issue
Block a user