From 7d05f4e8c7a2e52611d0aa0c7ad287b510370a6d Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Thu, 16 Feb 2023 10:41:02 +0800 Subject: [PATCH] =?UTF-8?q?:recycle:=20=E6=90=9C=E7=B4=A2=E5=91=BD?= =?UTF-8?q?=E4=B8=AD=E9=AB=98=E4=BA=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/model/search.go | 12 ++++++------ kernel/search/mark.go | 14 ++++++++++++++ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/kernel/model/search.go b/kernel/model/search.go index ed1ff2b7e..8288f0da3 100644 --- a/kernel/model/search.go +++ b/kernel/model/search.go @@ -915,9 +915,9 @@ func stringQuery(query string) string { func markReplaceSpan(n *ast.Node, unlinks *[]*ast.Node, keywords []string, markSpanDataType string, luteEngine *lute.Lute) bool { text := n.Content() if ast.NodeText == n.Type { - text = search.EncloseHighlighting(text, keywords, getMarkSpanStart(markSpanDataType), getMarkSpanEnd(), Conf.Search.CaseSensitive) + text = search.EncloseHighlighting(text, keywords, search.GetMarkSpanStart(markSpanDataType), search.GetMarkSpanEnd(), Conf.Search.CaseSensitive) n.Tokens = gulu.Str.ToBytes(text) - if bytes.Contains(n.Tokens, []byte(searchMarkDataType)) { + if bytes.Contains(n.Tokens, []byte(search.MarkDataType)) { linkTree := parse.Inline("", n.Tokens, luteEngine.ParseOptions) var children []*ast.Node for c := linkTree.Root.FirstChild.FirstChild; nil != c; c = c.Next { @@ -935,10 +935,10 @@ func markReplaceSpan(n *ast.Node, unlinks *[]*ast.Node, keywords []string, markS return false } - startTag := getMarkSpanStart(markSpanDataType) - text = search.EncloseHighlighting(text, keywords, startTag, getMarkSpanEnd(), Conf.Search.CaseSensitive) - if strings.Contains(text, searchMarkDataType) { - dataType := getMarkSpanStart(n.TextMarkType + " " + searchMarkDataType) + startTag := search.GetMarkSpanStart(markSpanDataType) + text = search.EncloseHighlighting(text, keywords, startTag, search.GetMarkSpanEnd(), Conf.Search.CaseSensitive) + if strings.Contains(text, search.MarkDataType) { + dataType := search.GetMarkSpanStart(n.TextMarkType + " " + search.MarkDataType) text = strings.ReplaceAll(text, startTag, dataType) tokens := gulu.Str.ToBytes(text) linkTree := parse.Inline("", tokens, luteEngine.ParseOptions) diff --git a/kernel/search/mark.go b/kernel/search/mark.go index 027d1a36c..b6c35a122 100644 --- a/kernel/search/mark.go +++ b/kernel/search/mark.go @@ -17,6 +17,7 @@ package search import ( + "fmt" "regexp" "strings" "unicode/utf8" @@ -99,3 +100,16 @@ func EncloseHighlighting(text string, keywords []string, openMark, closeMark str } return } + +const ( + MarkDataType = "search-mark" + VirtualBlockRefDataType = "virtual-block-ref" +) + +func GetMarkSpanStart(dataType string) string { + return fmt.Sprintf("", dataType) +} + +func GetMarkSpanEnd() string { + return "" +}