mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-16 22:50:13 +01:00
🎨 Remove invisible characters when entering document title https://github.com/siyuan-note/siyuan/issues/9493
This commit is contained in:
parent
3427b83361
commit
d8bb02fb20
6 changed files with 32 additions and 26 deletions
|
|
@ -246,10 +246,10 @@ func getWorkspaces(c *gin.Context) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sort.Slice(openedWorkspaces, func(i, j int) bool {
|
sort.Slice(openedWorkspaces, func(i, j int) bool {
|
||||||
return natsort.Compare(util.RemoveEmoji(filepath.Base(openedWorkspaces[i].Path)), util.RemoveEmoji(filepath.Base(openedWorkspaces[j].Path)))
|
return natsort.Compare(util.RemoveEmojiInvisible(filepath.Base(openedWorkspaces[i].Path)), util.RemoveEmojiInvisible(filepath.Base(openedWorkspaces[j].Path)))
|
||||||
})
|
})
|
||||||
sort.Slice(closedWorkspaces, func(i, j int) bool {
|
sort.Slice(closedWorkspaces, func(i, j int) bool {
|
||||||
return natsort.Compare(util.RemoveEmoji(filepath.Base(closedWorkspaces[i].Path)), util.RemoveEmoji(filepath.Base(closedWorkspaces[j].Path)))
|
return natsort.Compare(util.RemoveEmojiInvisible(filepath.Base(closedWorkspaces[i].Path)), util.RemoveEmojiInvisible(filepath.Base(closedWorkspaces[j].Path)))
|
||||||
})
|
})
|
||||||
workspaces = append(workspaces, openedWorkspaces...)
|
workspaces = append(workspaces, openedWorkspaces...)
|
||||||
workspaces = append(workspaces, closedWorkspaces...)
|
workspaces = append(workspaces, closedWorkspaces...)
|
||||||
|
|
|
||||||
|
|
@ -270,13 +270,13 @@ func GetBacklink2(id, keyword, mentionKeyword string, sortMode, mentionSortMode
|
||||||
case util.SortModeCreatedASC:
|
case util.SortModeCreatedASC:
|
||||||
return backlinks[i].Created < backlinks[j].Created
|
return backlinks[i].Created < backlinks[j].Created
|
||||||
case util.SortModeNameDESC:
|
case util.SortModeNameDESC:
|
||||||
return util.PinYinCompare(util.RemoveEmoji(backlinks[j].Name), util.RemoveEmoji(backlinks[i].Name))
|
return util.PinYinCompare(util.RemoveEmojiInvisible(backlinks[j].Name), util.RemoveEmojiInvisible(backlinks[i].Name))
|
||||||
case util.SortModeNameASC:
|
case util.SortModeNameASC:
|
||||||
return util.PinYinCompare(util.RemoveEmoji(backlinks[i].Name), util.RemoveEmoji(backlinks[j].Name))
|
return util.PinYinCompare(util.RemoveEmojiInvisible(backlinks[i].Name), util.RemoveEmojiInvisible(backlinks[j].Name))
|
||||||
case util.SortModeAlphanumDESC:
|
case util.SortModeAlphanumDESC:
|
||||||
return natsort.Compare(util.RemoveEmoji(backlinks[j].Name), util.RemoveEmoji(backlinks[i].Name))
|
return natsort.Compare(util.RemoveEmojiInvisible(backlinks[j].Name), util.RemoveEmojiInvisible(backlinks[i].Name))
|
||||||
case util.SortModeAlphanumASC:
|
case util.SortModeAlphanumASC:
|
||||||
return natsort.Compare(util.RemoveEmoji(backlinks[i].Name), util.RemoveEmoji(backlinks[j].Name))
|
return natsort.Compare(util.RemoveEmojiInvisible(backlinks[i].Name), util.RemoveEmojiInvisible(backlinks[j].Name))
|
||||||
}
|
}
|
||||||
return backlinks[i].ID > backlinks[j].ID
|
return backlinks[i].ID > backlinks[j].ID
|
||||||
})
|
})
|
||||||
|
|
@ -299,13 +299,13 @@ func GetBacklink2(id, keyword, mentionKeyword string, sortMode, mentionSortMode
|
||||||
case util.SortModeCreatedASC:
|
case util.SortModeCreatedASC:
|
||||||
return backmentions[i].Created < backmentions[j].Created
|
return backmentions[i].Created < backmentions[j].Created
|
||||||
case util.SortModeNameDESC:
|
case util.SortModeNameDESC:
|
||||||
return util.PinYinCompare(util.RemoveEmoji(backmentions[j].Name), util.RemoveEmoji(backmentions[i].Name))
|
return util.PinYinCompare(util.RemoveEmojiInvisible(backmentions[j].Name), util.RemoveEmojiInvisible(backmentions[i].Name))
|
||||||
case util.SortModeNameASC:
|
case util.SortModeNameASC:
|
||||||
return util.PinYinCompare(util.RemoveEmoji(backmentions[i].Name), util.RemoveEmoji(backmentions[j].Name))
|
return util.PinYinCompare(util.RemoveEmojiInvisible(backmentions[i].Name), util.RemoveEmojiInvisible(backmentions[j].Name))
|
||||||
case util.SortModeAlphanumDESC:
|
case util.SortModeAlphanumDESC:
|
||||||
return natsort.Compare(util.RemoveEmoji(backmentions[j].Name), util.RemoveEmoji(backmentions[i].Name))
|
return natsort.Compare(util.RemoveEmojiInvisible(backmentions[j].Name), util.RemoveEmojiInvisible(backmentions[i].Name))
|
||||||
case util.SortModeAlphanumASC:
|
case util.SortModeAlphanumASC:
|
||||||
return natsort.Compare(util.RemoveEmoji(backmentions[i].Name), util.RemoveEmoji(backmentions[j].Name))
|
return natsort.Compare(util.RemoveEmojiInvisible(backmentions[i].Name), util.RemoveEmojiInvisible(backmentions[j].Name))
|
||||||
}
|
}
|
||||||
return backmentions[i].ID > backmentions[j].ID
|
return backmentions[i].ID > backmentions[j].ID
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -152,21 +152,21 @@ func ListNotebooks() (ret []*Box, err error) {
|
||||||
switch Conf.FileTree.Sort {
|
switch Conf.FileTree.Sort {
|
||||||
case util.SortModeNameASC:
|
case util.SortModeNameASC:
|
||||||
sort.Slice(ret, func(i, j int) bool {
|
sort.Slice(ret, func(i, j int) bool {
|
||||||
return util.PinYinCompare(util.RemoveEmoji(ret[i].Name), util.RemoveEmoji(ret[j].Name))
|
return util.PinYinCompare(util.RemoveEmojiInvisible(ret[i].Name), util.RemoveEmojiInvisible(ret[j].Name))
|
||||||
})
|
})
|
||||||
case util.SortModeNameDESC:
|
case util.SortModeNameDESC:
|
||||||
sort.Slice(ret, func(i, j int) bool {
|
sort.Slice(ret, func(i, j int) bool {
|
||||||
return util.PinYinCompare(util.RemoveEmoji(ret[j].Name), util.RemoveEmoji(ret[i].Name))
|
return util.PinYinCompare(util.RemoveEmojiInvisible(ret[j].Name), util.RemoveEmojiInvisible(ret[i].Name))
|
||||||
})
|
})
|
||||||
case util.SortModeUpdatedASC:
|
case util.SortModeUpdatedASC:
|
||||||
case util.SortModeUpdatedDESC:
|
case util.SortModeUpdatedDESC:
|
||||||
case util.SortModeAlphanumASC:
|
case util.SortModeAlphanumASC:
|
||||||
sort.Slice(ret, func(i, j int) bool {
|
sort.Slice(ret, func(i, j int) bool {
|
||||||
return natsort.Compare(util.RemoveEmoji(ret[i].Name), util.RemoveEmoji(ret[j].Name))
|
return natsort.Compare(util.RemoveEmojiInvisible(ret[i].Name), util.RemoveEmojiInvisible(ret[j].Name))
|
||||||
})
|
})
|
||||||
case util.SortModeAlphanumDESC:
|
case util.SortModeAlphanumDESC:
|
||||||
sort.Slice(ret, func(i, j int) bool {
|
sort.Slice(ret, func(i, j int) bool {
|
||||||
return natsort.Compare(util.RemoveEmoji(ret[j].Name), util.RemoveEmoji(ret[i].Name))
|
return natsort.Compare(util.RemoveEmojiInvisible(ret[j].Name), util.RemoveEmojiInvisible(ret[i].Name))
|
||||||
})
|
})
|
||||||
case util.SortModeCustom:
|
case util.SortModeCustom:
|
||||||
sort.Slice(ret, func(i, j int) bool { return ret[i].Sort < ret[j].Sort })
|
sort.Slice(ret, func(i, j int) bool { return ret[i].Sort < ret[j].Sort })
|
||||||
|
|
|
||||||
|
|
@ -374,11 +374,11 @@ func ListDocTree(boxID, listPath string, sortMode int, flashcard, showHidden boo
|
||||||
switch sortMode {
|
switch sortMode {
|
||||||
case util.SortModeNameASC:
|
case util.SortModeNameASC:
|
||||||
sort.Slice(docs, func(i, j int) bool {
|
sort.Slice(docs, func(i, j int) bool {
|
||||||
return util.PinYinCompare(util.RemoveEmoji(docs[i].Name), util.RemoveEmoji(docs[j].Name))
|
return util.PinYinCompare(util.RemoveEmojiInvisible(docs[i].Name), util.RemoveEmojiInvisible(docs[j].Name))
|
||||||
})
|
})
|
||||||
case util.SortModeNameDESC:
|
case util.SortModeNameDESC:
|
||||||
sort.Slice(docs, func(i, j int) bool {
|
sort.Slice(docs, func(i, j int) bool {
|
||||||
return util.PinYinCompare(util.RemoveEmoji(docs[j].Name), util.RemoveEmoji(docs[i].Name))
|
return util.PinYinCompare(util.RemoveEmojiInvisible(docs[j].Name), util.RemoveEmojiInvisible(docs[i].Name))
|
||||||
})
|
})
|
||||||
case util.SortModeUpdatedASC:
|
case util.SortModeUpdatedASC:
|
||||||
sort.Slice(docs, func(i, j int) bool { return docs[i].Mtime < docs[j].Mtime })
|
sort.Slice(docs, func(i, j int) bool { return docs[i].Mtime < docs[j].Mtime })
|
||||||
|
|
@ -386,11 +386,11 @@ func ListDocTree(boxID, listPath string, sortMode int, flashcard, showHidden boo
|
||||||
sort.Slice(docs, func(i, j int) bool { return docs[i].Mtime > docs[j].Mtime })
|
sort.Slice(docs, func(i, j int) bool { return docs[i].Mtime > docs[j].Mtime })
|
||||||
case util.SortModeAlphanumASC:
|
case util.SortModeAlphanumASC:
|
||||||
sort.Slice(docs, func(i, j int) bool {
|
sort.Slice(docs, func(i, j int) bool {
|
||||||
return natsort.Compare(util.RemoveEmoji(docs[i].Name), util.RemoveEmoji(docs[j].Name))
|
return natsort.Compare(util.RemoveEmojiInvisible(docs[i].Name), util.RemoveEmojiInvisible(docs[j].Name))
|
||||||
})
|
})
|
||||||
case util.SortModeAlphanumDESC:
|
case util.SortModeAlphanumDESC:
|
||||||
sort.Slice(docs, func(i, j int) bool {
|
sort.Slice(docs, func(i, j int) bool {
|
||||||
return natsort.Compare(util.RemoveEmoji(docs[j].Name), util.RemoveEmoji(docs[i].Name))
|
return natsort.Compare(util.RemoveEmojiInvisible(docs[j].Name), util.RemoveEmojiInvisible(docs[i].Name))
|
||||||
})
|
})
|
||||||
case util.SortModeCustom:
|
case util.SortModeCustom:
|
||||||
fileTreeFiles := docs
|
fileTreeFiles := docs
|
||||||
|
|
|
||||||
|
|
@ -228,19 +228,19 @@ func sortTags(tags Tags) {
|
||||||
switch Conf.Tag.Sort {
|
switch Conf.Tag.Sort {
|
||||||
case util.SortModeNameASC:
|
case util.SortModeNameASC:
|
||||||
sort.Slice(tags, func(i, j int) bool {
|
sort.Slice(tags, func(i, j int) bool {
|
||||||
return util.PinYinCompare(util.RemoveEmoji(tags[i].Name), util.RemoveEmoji(tags[j].Name))
|
return util.PinYinCompare(util.RemoveEmojiInvisible(tags[i].Name), util.RemoveEmojiInvisible(tags[j].Name))
|
||||||
})
|
})
|
||||||
case util.SortModeNameDESC:
|
case util.SortModeNameDESC:
|
||||||
sort.Slice(tags, func(j, i int) bool {
|
sort.Slice(tags, func(j, i int) bool {
|
||||||
return util.PinYinCompare(util.RemoveEmoji(tags[i].Name), util.RemoveEmoji(tags[j].Name))
|
return util.PinYinCompare(util.RemoveEmojiInvisible(tags[i].Name), util.RemoveEmojiInvisible(tags[j].Name))
|
||||||
})
|
})
|
||||||
case util.SortModeAlphanumASC:
|
case util.SortModeAlphanumASC:
|
||||||
sort.Slice(tags, func(i, j int) bool {
|
sort.Slice(tags, func(i, j int) bool {
|
||||||
return natsort.Compare(util.RemoveEmoji((tags)[i].Name), util.RemoveEmoji((tags)[j].Name))
|
return natsort.Compare(util.RemoveEmojiInvisible((tags)[i].Name), util.RemoveEmojiInvisible((tags)[j].Name))
|
||||||
})
|
})
|
||||||
case util.SortModeAlphanumDESC:
|
case util.SortModeAlphanumDESC:
|
||||||
sort.Slice(tags, func(i, j int) bool {
|
sort.Slice(tags, func(i, j int) bool {
|
||||||
return natsort.Compare(util.RemoveEmoji((tags)[j].Name), util.RemoveEmoji((tags)[i].Name))
|
return natsort.Compare(util.RemoveEmojiInvisible((tags)[j].Name), util.RemoveEmojiInvisible((tags)[i].Name))
|
||||||
})
|
})
|
||||||
case util.SortModeRefCountASC:
|
case util.SortModeRefCountASC:
|
||||||
sort.Slice(tags, func(i, j int) bool { return (tags)[i].Count < (tags)[j].Count })
|
sort.Slice(tags, func(i, j int) bool { return (tags)[i].Count < (tags)[j].Count })
|
||||||
|
|
@ -248,7 +248,7 @@ func sortTags(tags Tags) {
|
||||||
sort.Slice(tags, func(i, j int) bool { return (tags)[i].Count > (tags)[j].Count })
|
sort.Slice(tags, func(i, j int) bool { return (tags)[i].Count > (tags)[j].Count })
|
||||||
default:
|
default:
|
||||||
sort.Slice(tags, func(i, j int) bool {
|
sort.Slice(tags, func(i, j int) bool {
|
||||||
return natsort.Compare(util.RemoveEmoji((tags)[i].Name), util.RemoveEmoji((tags)[j].Name))
|
return natsort.Compare(util.RemoveEmojiInvisible((tags)[i].Name), util.RemoveEmojiInvisible((tags)[j].Name))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,11 @@
|
||||||
|
|
||||||
package util
|
package util
|
||||||
|
|
||||||
import "regexp"
|
import (
|
||||||
|
"regexp"
|
||||||
|
|
||||||
|
"github.com/88250/gulu"
|
||||||
|
)
|
||||||
|
|
||||||
var emojiRegex = regexp.MustCompile(`/([0-9#][\x{20E3}])|` +
|
var emojiRegex = regexp.MustCompile(`/([0-9#][\x{20E3}])|` +
|
||||||
`[\x{00ae}\x{00a9}\x{203C}\x{2047}\x{2048}\x{2049}\x{3030}\x{303D}\x{2139}\x{2122}\x{3297}\x{3299}]|` +
|
`[\x{00ae}\x{00a9}\x{203C}\x{2047}\x{2048}\x{2049}\x{3030}\x{303D}\x{2139}\x{2122}\x{3297}\x{3299}]|` +
|
||||||
|
|
@ -37,6 +41,8 @@ var emojiRegex = regexp.MustCompile(`/([0-9#][\x{20E3}])|` +
|
||||||
`[\x{2700}-\x{27BF}]|` +
|
`[\x{2700}-\x{27BF}]|` +
|
||||||
`[\x{10000}-\x{E01EF}]`)
|
`[\x{10000}-\x{E01EF}]`)
|
||||||
|
|
||||||
func RemoveEmoji(text string) string {
|
func RemoveEmojiInvisible(text string) (ret string) {
|
||||||
return emojiRegex.ReplaceAllString(text, "")
|
ret = emojiRegex.ReplaceAllString(text, "")
|
||||||
|
ret = gulu.Str.RemoveInvisible(ret)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue