Merge pull request #1710 from mattermost/plt-1498

PLT-1498 Add hashtag testing and allow special german characters
Этот коммит содержится в:
Christopher Speller
2015-12-16 09:09:11 -05:00
родитель a13fbfe493 b660acf8f8
Коммит 3e418a100a
4 изменённых файлов: 48 добавлений и 4 удалений

20
doc/developer/tests/test-hashtags.md Обычный файл
Просмотреть файл

@@ -0,0 +1,20 @@
# Hashtag Testing
Hashtags in Mattermosts should render as specified below.
#### These strings should auto-link:
#testing
#testing123
#test-test
#test_test
#test! (punctuation should be excluded from linking)
#test1 #test2
#hüllo
#### These strings should not auto-link:
#123test
#?test
#-test

Просмотреть файл

@@ -273,9 +273,9 @@ func Etag(parts ...interface{}) string {
return etag
}
var validHashtag = regexp.MustCompile(`^(#[A-Za-z]+[A-Za-z0-9_\-]*[A-Za-z0-9])$`)
var puncStart = regexp.MustCompile(`^[.,()&$!\[\]{}':;\\]+`)
var puncEnd = regexp.MustCompile(`[.,()&$#!\[\]{}';\\]+$`)
var validHashtag = regexp.MustCompile(`^(#[A-Za-zäöüÄÖÜß]+[A-Za-z0-9äöüÄÖÜß_\-]*[A-Za-z0-9äöüÄÖÜß])$`)
var puncStart = regexp.MustCompile(`^[.,()&$!\?\[\]{}':;\\]+`)
var puncEnd = regexp.MustCompile(`[.,()&$#!\?\[\]{}';\\]+$`)
func ParseHashtags(text string) (string, string) {
words := strings.Fields(text)

Просмотреть файл

@@ -81,3 +81,27 @@ func TestEtag(t *testing.T) {
t.Fatal()
}
}
var hashtags map[string]string = map[string]string{
"#test": "#test",
"test": "",
"#test123": "#test123",
"#123test123": "",
"#test-test": "#test-test",
"#test?": "#test",
"hi #there": "#there",
"#bug #idea": "#bug #idea",
"#bug or #gif!": "#bug #gif",
"#hüllo": "#hüllo",
"#?test": "",
"#-test": "",
"#yo_yo": "#yo_yo",
}
func TestParseHashtags(t *testing.T) {
for input, output := range hashtags {
if o, _ := ParseHashtags(input); o != output {
t.Fatal("expected=" + output + " actual=" + o)
}
}
}

Просмотреть файл

@@ -256,7 +256,7 @@ function autolinkHashtags(text, tokens) {
return prefix + alias;
}
return output.replace(/(^|\W)(#[a-zA-Z][a-zA-Z0-9.\-_]*)\b/g, replaceHashtagWithToken);
return output.replace(/(^|\W)(#[a-zA-ZäöüÄÖÜß][a-zA-Z0-9äöüÄÖÜß.\-_]*)\b/g, replaceHashtagWithToken);
}
const puncStart = /^[.,()&$!\[\]{}':;\\]+/;