fix: exclude all punctuation chars except underscore in tags (#1974)

* Change tag regex

* Update tests

* Add more tag tests
This commit is contained in:
Felipe Martínez 2023-07-17 19:53:07 +02:00 committed by GitHub
parent b5d4b8eae8
commit 8c61531671
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 4 deletions

View file

@ -176,7 +176,7 @@ func convertTagFromStore(tag *store.Tag) *Tag {
}
}
var tagRegexp = regexp.MustCompile(`#([^\s#,]+)`)
var tagRegexp = regexp.MustCompile(`#((?:[^\s\p{P}]|_)+)`)
func findTagListFromMemoContent(memoContent string) []string {
tagMapSet := make(map[string]bool)

View file

@ -2,6 +2,8 @@ package v1
import (
"testing"
"golang.org/x/exp/slices"
)
func TestFindTagListFromMemoContent(t *testing.T) {
@ -35,12 +37,16 @@ func TestFindTagListFromMemoContent(t *testing.T) {
},
{
memoContent: "#tag1 http://123123.com?123123#tag2 \n#tag3 #tag4 http://123123.com?123123#tag2) ",
want: []string{"tag1", "tag2", "tag2)", "tag3", "tag4"},
want: []string{"tag1", "tag2", "tag3", "tag4"},
},
{
memoContent: "#tag1,#tag2! #tag3.. #tag_4",
want: []string{"tag1", "tag2", "tag3", "tag_4"},
},
}
for _, test := range tests {
result := findTagListFromMemoContent(test.memoContent)
if len(result) != len(test.want) {
if !slices.Equal(result, test.want) {
t.Errorf("Find tag list %s: got result %v, want %v.", test.memoContent, result, test.want)
}
}

View file

@ -1,6 +1,6 @@
import { matcher } from "../matcher";
export const TAG_REG = /#([^\s#,]+)/;
export const TAG_REG = /#((?:[^\s\p{P}]|_)+)/u;
const renderer = (rawStr: string) => {
const matchResult = matcher(rawStr, TAG_REG);