mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-06-06 05:30:57 +00:00
StrSlice deduplication.
This commit is contained in:
@@ -75,3 +75,29 @@ func StrMapSortedKeys(m map[string]string) []string {
|
||||
sort.Strings(keys)
|
||||
return keys
|
||||
}
|
||||
|
||||
// StrSliceDeduplicate removes dups in slice
|
||||
func StrSliceDeduplicate(s []string) []string {
|
||||
l := len(s)
|
||||
if l < 2 {
|
||||
return s
|
||||
}
|
||||
if l == 2 {
|
||||
if s[0] == s[1] {
|
||||
return s[0:1]
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
found := make(map[string]bool, l)
|
||||
j := 0
|
||||
for i, x := range s {
|
||||
if !found[x] {
|
||||
found[x] = true
|
||||
s[j] = s[i]
|
||||
j++
|
||||
}
|
||||
}
|
||||
|
||||
return s[:j]
|
||||
}
|
||||
|
||||
@@ -47,3 +47,12 @@ func (s *ListSuite) TestStrMapSortedKeys(c *C) {
|
||||
c.Check(StrMapSortedKeys(map[string]string{}), DeepEquals, []string{})
|
||||
c.Check(StrMapSortedKeys(map[string]string{"x": "1", "a": "3", "y": "4"}), DeepEquals, []string{"a", "x", "y"})
|
||||
}
|
||||
|
||||
func (s *ListSuite) TestStrSliceDeduplicate(c *C) {
|
||||
c.Check(StrSliceDeduplicate([]string{}), DeepEquals, []string{})
|
||||
c.Check(StrSliceDeduplicate([]string{"a"}), DeepEquals, []string{"a"})
|
||||
c.Check(StrSliceDeduplicate([]string{"a", "b"}), DeepEquals, []string{"a", "b"})
|
||||
c.Check(StrSliceDeduplicate([]string{"a", "a"}), DeepEquals, []string{"a"})
|
||||
c.Check(StrSliceDeduplicate([]string{"a", "b", "c", "a", "a", "b"}), DeepEquals, []string{"a", "b", "c"})
|
||||
c.Check(StrSliceDeduplicate([]string{"a", "b", "c", "d", "e", "f"}), DeepEquals, []string{"a", "b", "c", "d", "e", "f"})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user