github.com/cjdelisle/matterfoss@v5.11.1+incompatible/model/channel_mentions.go (about)

     1  // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
     2  // See License.txt for license information.
     3  
     4  package model
     5  
     6  import (
     7  	"regexp"
     8  	"strings"
     9  )
    10  
    11  var channelMentionRegexp = regexp.MustCompile(`\B~[a-zA-Z0-9\-_]+`)
    12  
    13  func ChannelMentions(message string) []string {
    14  	var names []string
    15  
    16  	if strings.Contains(message, "~") {
    17  		alreadyMentioned := make(map[string]bool)
    18  		for _, match := range channelMentionRegexp.FindAllString(message, -1) {
    19  			name := match[1:]
    20  			if !alreadyMentioned[name] {
    21  				names = append(names, name)
    22  				alreadyMentioned[name] = true
    23  			}
    24  		}
    25  	}
    26  
    27  	return names
    28  }