Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
3cf0e14f7f
5 changed files with 91 additions and 16 deletions
|
@ -308,6 +308,8 @@ func ServeAPI(ginServer *gin.Engine) {
|
|||
ginServer.Handle("POST", "/api/setting/setAI", model.CheckAuth, model.CheckReadonly, setAI)
|
||||
ginServer.Handle("POST", "/api/setting/setBazaar", model.CheckAuth, model.CheckReadonly, setBazaar)
|
||||
ginServer.Handle("POST", "/api/setting/refreshVirtualBlockRef", model.CheckAuth, model.CheckReadonly, refreshVirtualBlockRef)
|
||||
ginServer.Handle("POST", "/api/setting/addVirtualBlockRefInclude", model.CheckAuth, model.CheckReadonly, addVirtualBlockRefInclude)
|
||||
ginServer.Handle("POST", "/api/setting/addVirtualBlockRefExclude", model.CheckAuth, model.CheckReadonly, addVirtualBlockRefExclude)
|
||||
|
||||
ginServer.Handle("POST", "/api/graph/resetGraph", model.CheckAuth, model.CheckReadonly, resetGraph)
|
||||
ginServer.Handle("POST", "/api/graph/resetLocalGraph", model.CheckAuth, model.CheckReadonly, resetLocalGraph)
|
||||
|
|
|
@ -83,8 +83,8 @@ func findReplace(c *gin.Context) {
|
|||
}
|
||||
|
||||
replaceTypes := map[string]bool{}
|
||||
// text, img-text, img-title, img-src, a-text, a-title, a-href, code, em, strong, inline-math, inline-memo, kbd, mark, s, sub, sup, tag, u
|
||||
// doc-title, code-block, math-block, html-block
|
||||
// text, imgText, imgTitle, imgSrc, aText, aTitle, aHref, code, em, strong, inlineMath, inlineMemo, kbd, mark, s, sub, sup, tag, u
|
||||
// docTitle, codeBlock, mathBlock, htmlBlock
|
||||
if nil != arg["replaceTypes"] {
|
||||
replaceTypesArg := arg["replaceTypes"].(map[string]interface{})
|
||||
for t, b := range replaceTypesArg {
|
||||
|
|
|
@ -29,6 +29,48 @@ import (
|
|||
"github.com/siyuan-note/siyuan/kernel/util"
|
||||
)
|
||||
|
||||
func addVirtualBlockRefExclude(c *gin.Context) {
|
||||
// Add internal kernel API `/api/setting/addVirtualBlockRefExclude` https://github.com/siyuan-note/siyuan/issues/9909
|
||||
|
||||
ret := gulu.Ret.NewResult()
|
||||
defer c.JSON(http.StatusOK, ret)
|
||||
|
||||
arg, ok := util.JsonArg(c, ret)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
|
||||
keywordsArg := arg["keywords"]
|
||||
var keywords []string
|
||||
for _, k := range keywordsArg.([]interface{}) {
|
||||
keywords = append(keywords, k.(string))
|
||||
}
|
||||
|
||||
model.AddVirtualBlockRefExclude(keywords)
|
||||
util.BroadcastByType("main", "setConf", 0, "", model.Conf)
|
||||
}
|
||||
|
||||
func addVirtualBlockRefInclude(c *gin.Context) {
|
||||
// Add internal kernel API `/api/setting/addVirtualBlockRefInclude` https://github.com/siyuan-note/siyuan/issues/9909
|
||||
|
||||
ret := gulu.Ret.NewResult()
|
||||
defer c.JSON(http.StatusOK, ret)
|
||||
|
||||
arg, ok := util.JsonArg(c, ret)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
|
||||
keywordsArg := arg["keywords"]
|
||||
var keywords []string
|
||||
for _, k := range keywordsArg.([]interface{}) {
|
||||
keywords = append(keywords, k.(string))
|
||||
}
|
||||
|
||||
model.AddVirtualBlockRefInclude(keywords)
|
||||
util.BroadcastByType("main", "setConf", 0, "", model.Conf)
|
||||
}
|
||||
|
||||
func refreshVirtualBlockRef(c *gin.Context) {
|
||||
// Add internal kernel API `/api/setting/refreshVirtualBlockRef` https://github.com/siyuan-note/siyuan/issues/9829
|
||||
|
||||
|
@ -36,6 +78,7 @@ func refreshVirtualBlockRef(c *gin.Context) {
|
|||
defer c.JSON(http.StatusOK, ret)
|
||||
|
||||
model.ResetVirtualBlockRefCache()
|
||||
util.BroadcastByType("main", "setConf", 0, "", model.Conf)
|
||||
}
|
||||
|
||||
func setBazaar(c *gin.Context) {
|
||||
|
|
|
@ -353,7 +353,7 @@ func FindReplace(keyword, replacement string, replaceTypes map[string]bool, ids
|
|||
}
|
||||
|
||||
if ast.NodeDocument == node.Type {
|
||||
if !replaceTypes["doc-title"] {
|
||||
if !replaceTypes["docTitle"] {
|
||||
continue
|
||||
}
|
||||
|
||||
|
@ -383,37 +383,37 @@ func FindReplace(keyword, replacement string, replaceTypes map[string]bool, ids
|
|||
|
||||
replaceNodeTokens(n, method, keyword, replacement, r)
|
||||
case ast.NodeLinkDest:
|
||||
if !replaceTypes["img-src"] {
|
||||
if !replaceTypes["imgSrc"] {
|
||||
return ast.WalkContinue
|
||||
}
|
||||
|
||||
replaceNodeTokens(n, method, keyword, replacement, r)
|
||||
case ast.NodeLinkText:
|
||||
if !replaceTypes["img-text"] {
|
||||
if !replaceTypes["imgText"] {
|
||||
return ast.WalkContinue
|
||||
}
|
||||
|
||||
replaceNodeTokens(n, method, keyword, replacement, r)
|
||||
case ast.NodeLinkTitle:
|
||||
if !replaceTypes["img-title"] {
|
||||
if !replaceTypes["imgTitle"] {
|
||||
return ast.WalkContinue
|
||||
}
|
||||
|
||||
replaceNodeTokens(n, method, keyword, replacement, r)
|
||||
case ast.NodeCodeBlockCode:
|
||||
if !replaceTypes["code-block"] {
|
||||
if !replaceTypes["codeBlock"] {
|
||||
return ast.WalkContinue
|
||||
}
|
||||
|
||||
replaceNodeTokens(n, method, keyword, replacement, r)
|
||||
case ast.NodeMathBlockContent:
|
||||
if !replaceTypes["math-block"] {
|
||||
if !replaceTypes["mathBlock"] {
|
||||
return ast.WalkContinue
|
||||
}
|
||||
|
||||
replaceNodeTokens(n, method, keyword, replacement, r)
|
||||
case ast.NodeHTMLBlock:
|
||||
if !replaceTypes["html-block"] {
|
||||
if !replaceTypes["htmlBlock"] {
|
||||
return ast.WalkContinue
|
||||
}
|
||||
|
||||
|
@ -434,7 +434,7 @@ func FindReplace(keyword, replacement string, replaceTypes map[string]bool, ids
|
|||
}
|
||||
}
|
||||
} else if n.IsTextMarkType("a") {
|
||||
if replaceTypes["a-text"] {
|
||||
if replaceTypes["aText"] {
|
||||
if 0 == method {
|
||||
if bytes.Contains(n.Tokens, []byte(keyword)) {
|
||||
n.TextMarkTextContent = strings.ReplaceAll(n.TextMarkTextContent, keyword, replacement)
|
||||
|
@ -446,7 +446,7 @@ func FindReplace(keyword, replacement string, replaceTypes map[string]bool, ids
|
|||
}
|
||||
}
|
||||
|
||||
if replaceTypes["a-title"] {
|
||||
if replaceTypes["aTitle"] {
|
||||
if 0 == method {
|
||||
if strings.Contains(n.TextMarkATitle, keyword) {
|
||||
n.TextMarkATitle = strings.ReplaceAll(n.TextMarkATitle, keyword, replacement)
|
||||
|
@ -458,7 +458,7 @@ func FindReplace(keyword, replacement string, replaceTypes map[string]bool, ids
|
|||
}
|
||||
}
|
||||
|
||||
if replaceTypes["a-href"] {
|
||||
if replaceTypes["aHref"] {
|
||||
if 0 == method {
|
||||
if strings.Contains(n.TextMarkAHref, keyword) {
|
||||
n.TextMarkAHref = strings.ReplaceAll(n.TextMarkAHref, keyword, replacement)
|
||||
|
@ -524,8 +524,8 @@ func FindReplace(keyword, replacement string, replaceTypes map[string]bool, ids
|
|||
}
|
||||
|
||||
replaceNodeTextMarkTextContent(n, method, keyword, replacement, r)
|
||||
} else if n.IsTextMarkType("inline-math") {
|
||||
if !replaceTypes["inline-math"] {
|
||||
} else if n.IsTextMarkType("inlineMath") {
|
||||
if !replaceTypes["inlineMath"] {
|
||||
return ast.WalkContinue
|
||||
}
|
||||
|
||||
|
@ -538,8 +538,8 @@ func FindReplace(keyword, replacement string, replaceTypes map[string]bool, ids
|
|||
n.TextMarkInlineMathContent = r.ReplaceAllString(n.TextMarkInlineMathContent, replacement)
|
||||
}
|
||||
}
|
||||
} else if n.IsTextMarkType("inline-memo") {
|
||||
if !replaceTypes["inline-memo"] {
|
||||
} else if n.IsTextMarkType("inlineMemo") {
|
||||
if !replaceTypes["inlineMemo"] {
|
||||
return ast.WalkContinue
|
||||
}
|
||||
|
||||
|
|
|
@ -113,6 +113,36 @@ func ResetVirtualBlockRefCache() {
|
|||
CacheVirtualBlockRefJob()
|
||||
}
|
||||
|
||||
func AddVirtualBlockRefInclude(keyword []string) {
|
||||
if 1 > len(keyword) {
|
||||
return
|
||||
}
|
||||
|
||||
include := strings.ReplaceAll(Conf.Editor.VirtualBlockRefInclude, "\\,", "__comma@sep__")
|
||||
includes := strings.Split(include, ",")
|
||||
includes = append(includes, keyword...)
|
||||
includes = gulu.Str.RemoveDuplicatedElem(includes)
|
||||
Conf.Editor.VirtualBlockRefInclude = strings.Join(includes, ",")
|
||||
Conf.Save()
|
||||
|
||||
ResetVirtualBlockRefCache()
|
||||
}
|
||||
|
||||
func AddVirtualBlockRefExclude(keyword []string) {
|
||||
if 1 > len(keyword) {
|
||||
return
|
||||
}
|
||||
|
||||
exclude := strings.ReplaceAll(Conf.Editor.VirtualBlockRefExclude, "\\,", "__comma@sep__")
|
||||
excludes := strings.Split(exclude, ",")
|
||||
excludes = append(excludes, keyword...)
|
||||
excludes = gulu.Str.RemoveDuplicatedElem(excludes)
|
||||
Conf.Editor.VirtualBlockRefExclude = strings.Join(excludes, ",")
|
||||
Conf.Save()
|
||||
|
||||
ResetVirtualBlockRefCache()
|
||||
}
|
||||
|
||||
func processVirtualRef(n *ast.Node, unlinks *[]*ast.Node, virtualBlockRefKeywords []string, refCount map[string]int, luteEngine *lute.Lute) bool {
|
||||
if !Conf.Editor.VirtualBlockRef {
|
||||
return false
|
||||
|
|
Loading…
Add table
Reference in a new issue