fixed a few things

This commit is contained in:
tsmethurst 2021-05-12 21:47:45 +02:00
commit 3ba528120c
6 changed files with 92 additions and 106 deletions

View file

@ -35,8 +35,10 @@ const (
)
var (
mentionNameRegexString = `@([a-zA-Z0-9_]+)(?:@([a-zA-Z0-9_\-\.]+)?)`
mentionNameRegex = regexp.MustCompile(fmt.Sprintf(`^%s$`, mentionNameRegexString))
mentionNameRegexString = `^@([a-zA-Z0-9_]+)(?:@([a-zA-Z0-9_\-\.]+)?)$`
// mention name regex captures the username and domain part from a mention string
// such as @whatever_user@example.org, returning whatever_user and example.org (without the @ symbols)
mentionNameRegex = regexp.MustCompile(mentionNameRegexString)
// mention regex can be played around with here: https://regex101.com/r/qwM9D3/1
mentionFinderRegexString = `(?: |^|\W)(@[a-zA-Z0-9_]+(?:@[a-zA-Z0-9_\-\.]+)?)(?: |\n)`

View file

@ -62,23 +62,18 @@ func DeriveEmojisFromStatus(status string) []string {
return lower(unique(emojis))
}
// ExtractMentionParts extracts the username @test_user and the domain @example.org
// ExtractMentionParts extracts the username test_user and the domain example.org
// from a mention string like @test_user@example.org.
//
// If no domain is provided, it will return just the username part.
//
// If nothing is matched, it will return an error.
func ExtractMentionParts(mention string) (username, domain string, err error) {
matches := mentionNameRegex.FindStringSubmatch(mention)
if matches == nil {
if matches == nil || len(matches) != 3 {
err = fmt.Errorf("could't match mention %s", mention)
return
}
fmt.Println(matches)
username = matches[1]
if len(matches) == 2 {
domain = matches[2]
}
domain = matches[2]
return
}