diff options
author | hmhealey <harrisonmhealey@gmail.com> | 2016-01-25 16:47:49 -0500 |
---|---|---|
committer | hmhealey <harrisonmhealey@gmail.com> | 2016-01-26 10:20:36 -0500 |
commit | 97ede2a428faf3a62ce0140e51ed591e261c09a1 (patch) | |
tree | 579a8970f42373bc99ed12dc6d46f0c47947815a /model/utils.go | |
parent | ab5425f9b9f8a2e3ead637a27dc01bc9d06e16b7 (diff) | |
download | chat-97ede2a428faf3a62ce0140e51ed591e261c09a1.tar.gz chat-97ede2a428faf3a62ce0140e51ed591e261c09a1.tar.bz2 chat-97ede2a428faf3a62ce0140e51ed591e261c09a1.zip |
Updated serverside hashtag regex to ignore more punctuation around words
Diffstat (limited to 'model/utils.go')
-rw-r--r-- | model/utils.go | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/model/utils.go b/model/utils.go index 70b7e3bbd..719a2ad1b 100644 --- a/model/utils.go +++ b/model/utils.go @@ -298,8 +298,9 @@ func Etag(parts ...interface{}) string { } var validHashtag = regexp.MustCompile(`^(#[A-Za-zäöüÄÖÜß]+[A-Za-z0-9äöüÄÖÜß_\-]*[A-Za-z0-9äöüÄÖÜß])$`) -var puncStart = regexp.MustCompile(`^[.,()&$!\?\[\]{}':;\\]+`) -var puncEnd = regexp.MustCompile(`[.,()&$#!\?\[\]{}';\\]+$`) +var puncStart = regexp.MustCompile(`^[.,()&$!\?\[\]{}':;\\<>\-+=%^*|]+`) +var hashtagStart = regexp.MustCompile(`^#{2,}`) +var puncEnd = regexp.MustCompile(`[.,()&$#!\?\[\]{}':;\\<>\-+=%^*|]+$`) func ParseHashtags(text string) (string, string) { words := strings.Fields(text) @@ -307,8 +308,13 @@ func ParseHashtags(text string) (string, string) { hashtagString := "" plainString := "" for _, word := range words { + // trim off surrounding punctuation word = puncStart.ReplaceAllString(word, "") word = puncEnd.ReplaceAllString(word, "") + + // and remove extra pound #s + word = hashtagStart.ReplaceAllString(word, "#") + if validHashtag.MatchString(word) { hashtagString += " " + word } else { |