Przeglądaj źródła

:art: Improve backmention highlighting https://github.com/siyuan-note/siyuan/issues/13328

Daniel 7 miesięcy temu
rodzic
commit
8f89caf22e
2 zmienionych plików z 15 dodań i 6 usunięć
  1. 4 2
      kernel/api/ref.go
  2. 11 4
      kernel/model/backlink.go

+ 4 - 2
kernel/api/ref.go

@@ -60,9 +60,10 @@ func getBackmentionDoc(c *gin.Context) {
 	if val, ok := arg["highlight"]; ok {
 	if val, ok := arg["highlight"]; ok {
 		highlight = val.(bool)
 		highlight = val.(bool)
 	}
 	}
-	backlinks := model.GetBackmentionDoc(defID, refTreeID, keyword, containChildren, highlight)
+	backlinks, keywords := model.GetBackmentionDoc(defID, refTreeID, keyword, containChildren, highlight)
 	ret.Data = map[string]interface{}{
 	ret.Data = map[string]interface{}{
 		"backmentions": backlinks,
 		"backmentions": backlinks,
+		"keywords":     keywords,
 	}
 	}
 }
 }
 
 
@@ -86,9 +87,10 @@ func getBacklinkDoc(c *gin.Context) {
 	if val, ok := arg["highlight"]; ok {
 	if val, ok := arg["highlight"]; ok {
 		highlight = val.(bool)
 		highlight = val.(bool)
 	}
 	}
-	backlinks := model.GetBacklinkDoc(defID, refTreeID, keyword, containChildren, highlight)
+	backlinks, keywords := model.GetBacklinkDoc(defID, refTreeID, keyword, containChildren, highlight)
 	ret.Data = map[string]interface{}{
 	ret.Data = map[string]interface{}{
 		"backlinks": backlinks,
 		"backlinks": backlinks,
+		"keywords":  keywords,
 	}
 	}
 }
 }
 
 

+ 11 - 4
kernel/model/backlink.go

@@ -62,8 +62,7 @@ type Backlink struct {
 	node *ast.Node // 仅用于按文档内容顺序排序
 	node *ast.Node // 仅用于按文档内容顺序排序
 }
 }
 
 
-func GetBackmentionDoc(defID, refTreeID, keyword string, containChildren, highlight bool) (ret []*Backlink) {
-	var keywords []string
+func GetBackmentionDoc(defID, refTreeID, keyword string, containChildren, highlight bool) (ret []*Backlink, keywords []string) {
 	keyword = strings.TrimSpace(keyword)
 	keyword = strings.TrimSpace(keyword)
 	if "" != keyword {
 	if "" != keyword {
 		keywords = strings.Split(keyword, " ")
 		keywords = strings.Split(keyword, " ")
@@ -98,6 +97,11 @@ func GetBackmentionDoc(defID, refTreeID, keyword string, containChildren, highli
 		mentionKeywords = append(mentionKeywords, strings.Split(keyword, " ")...)
 		mentionKeywords = append(mentionKeywords, strings.Split(keyword, " ")...)
 	}
 	}
 	mentionKeywords = gulu.Str.RemoveDuplicatedElem(mentionKeywords)
 	mentionKeywords = gulu.Str.RemoveDuplicatedElem(mentionKeywords)
+	keywords = append(keywords, mentionKeywords...)
+	keywords = gulu.Str.RemoveDuplicatedElem(keywords)
+	if 1 > len(keywords) {
+		keywords = []string{}
+	}
 
 
 	var refTree *parse.Tree
 	var refTree *parse.Tree
 	trees := filesys.LoadTrees(mentionBlockIDs)
 	trees := filesys.LoadTrees(mentionBlockIDs)
@@ -118,12 +122,15 @@ func GetBackmentionDoc(defID, refTreeID, keyword string, containChildren, highli
 	return
 	return
 }
 }
 
 
-func GetBacklinkDoc(defID, refTreeID, keyword string, containChildren, highlight bool) (ret []*Backlink) {
-	var keywords []string
+func GetBacklinkDoc(defID, refTreeID, keyword string, containChildren, highlight bool) (ret []*Backlink, keywords []string) {
 	keyword = strings.TrimSpace(keyword)
 	keyword = strings.TrimSpace(keyword)
 	if "" != keyword {
 	if "" != keyword {
 		keywords = strings.Split(keyword, " ")
 		keywords = strings.Split(keyword, " ")
 	}
 	}
+	keywords = gulu.Str.RemoveDuplicatedElem(keywords)
+	if 1 > len(keywords) {
+		keywords = []string{}
+	}
 
 
 	ret = []*Backlink{}
 	ret = []*Backlink{}
 	sqlBlock := sql.GetBlock(defID)
 	sqlBlock := sql.GetBlock(defID)