diff options
Diffstat (limited to 'internal/util')
-rw-r--r-- | internal/util/statustools.go | 16 | ||||
-rw-r--r-- | internal/util/statustools_test.go | 22 |
2 files changed, 22 insertions, 16 deletions
diff --git a/internal/util/statustools.go b/internal/util/statustools.go index 93294da68..ce5860c6d 100644 --- a/internal/util/statustools.go +++ b/internal/util/statustools.go @@ -46,7 +46,7 @@ func DeriveHashtagsFromStatus(status string) []string { for _, m := range HashtagFinderRegex.FindAllStringSubmatch(status, -1) { tags = append(tags, strings.TrimPrefix(m[1], "#")) } - return uniqueLower(tags) + return unique(tags) } // DeriveEmojisFromStatus takes a plaintext (ie., not html-formatted) status, @@ -92,17 +92,3 @@ func unique(s []string) []string { } return list } - -// uniqueLower returns a deduplicated version of a given string slice, with all entries converted to lowercase -func uniqueLower(s []string) []string { - keys := make(map[string]bool) - list := []string{} - for _, entry := range s { - eLower := strings.ToLower(entry) - if _, value := keys[eLower]; !value { - keys[eLower] = true - list = append(list, eLower) - } - } - return list -} diff --git a/internal/util/statustools_test.go b/internal/util/statustools_test.go index 5bdce2d5a..0ec2719f5 100644 --- a/internal/util/statustools_test.go +++ b/internal/util/statustools_test.go @@ -79,7 +79,7 @@ func (suite *StatusTestSuite) TestDeriveHashtagsOK() { assert.Equal(suite.T(), "testing123", tags[0]) assert.Equal(suite.T(), "also", tags[1]) assert.Equal(suite.T(), "thisshouldwork", tags[2]) - assert.Equal(suite.T(), "thisshouldalsowork", tags[3]) + assert.Equal(suite.T(), "ThisShouldAlsoWork", tags[3]) assert.Equal(suite.T(), "111111", tags[4]) } @@ -108,6 +108,26 @@ Here's some normal text with an :emoji: at the end assert.Equal(suite.T(), "underscores_ok_too", tags[6]) } +func (suite *StatusTestSuite) TestDeriveMultiple() { + statusText := `Another test @foss_satan@fossbros-anonymous.io + + #Hashtag + + Text` + + ms := util.DeriveMentionsFromStatus(statusText) + hs := util.DeriveHashtagsFromStatus(statusText) + es := util.DeriveEmojisFromStatus(statusText) + + assert.Len(suite.T(), ms, 1) + assert.Equal(suite.T(), "@foss_satan@fossbros-anonymous.io", ms[0]) + + assert.Len(suite.T(), hs, 1) + assert.Equal(suite.T(), "Hashtag", hs[0]) + + assert.Len(suite.T(), es, 0) +} + func TestStatusTestSuite(t *testing.T) { suite.Run(t, new(StatusTestSuite)) } |