mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-05-11 20:36:03 +02:00
WIP Bump generics
This commit is contained in:
parent
ef1da6f704
commit
d1e6162ae6
2 changed files with 66 additions and 0 deletions
65
vendor/github.com/jesseduffield/generics/orderedset/orderedset.go
generated
vendored
Normal file
65
vendor/github.com/jesseduffield/generics/orderedset/orderedset.go
generated
vendored
Normal file
|
@ -0,0 +1,65 @@
|
|||
package orderedset
|
||||
|
||||
import (
|
||||
orderedmap "github.com/wk8/go-ordered-map/v2"
|
||||
)
|
||||
|
||||
type OrderedSet[T comparable] struct {
|
||||
om *orderedmap.OrderedMap[T, bool]
|
||||
}
|
||||
|
||||
func New[T comparable]() *OrderedSet[T] {
|
||||
return &OrderedSet[T]{om: orderedmap.New[T, bool]()}
|
||||
}
|
||||
|
||||
func NewFromSlice[T comparable](slice []T) *OrderedSet[T] {
|
||||
result := &OrderedSet[T]{om: orderedmap.New[T, bool](len(slice))}
|
||||
result.Add(slice...)
|
||||
return result
|
||||
}
|
||||
|
||||
func (os *OrderedSet[T]) Add(values ...T) {
|
||||
for _, value := range values {
|
||||
os.om.Set(value, true)
|
||||
}
|
||||
}
|
||||
|
||||
func (os *OrderedSet[T]) Remove(value T) {
|
||||
os.om.Delete(value)
|
||||
}
|
||||
|
||||
func (os *OrderedSet[T]) RemoveSlice(slice []T) {
|
||||
for _, value := range slice {
|
||||
os.Remove(value)
|
||||
}
|
||||
}
|
||||
|
||||
func (os *OrderedSet[T]) Includes(value T) bool {
|
||||
return os.om.Value(value)
|
||||
}
|
||||
|
||||
func (os *OrderedSet[T]) Len() int {
|
||||
return os.om.Len()
|
||||
}
|
||||
|
||||
func (os *OrderedSet[T]) ToSliceFromOldest() []T {
|
||||
// TODO: can be simplified to
|
||||
// return os.om.KeysFromOldest()
|
||||
// when we update to a newer version of go-ordered-map
|
||||
result := make([]T, 0, os.Len())
|
||||
for pair := os.om.Oldest(); pair != nil; pair = pair.Next() {
|
||||
result = append(result, pair.Key)
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func (os *OrderedSet[T]) ToSliceFromNewest() []T {
|
||||
// TODO: can be simplified to
|
||||
// return os.om.KeysFromNewest()
|
||||
// when we update to a newer version of go-ordered-map
|
||||
result := make([]T, 0, os.Len())
|
||||
for pair := os.om.Newest(); pair != nil; pair = pair.Prev() {
|
||||
result = append(result, pair.Key)
|
||||
}
|
||||
return result
|
||||
}
|
1
vendor/modules.txt
vendored
1
vendor/modules.txt
vendored
|
@ -177,6 +177,7 @@ github.com/jbenet/go-context/io
|
|||
# github.com/jesseduffield/generics v0.0.0-20250406224309-4f541cb84918
|
||||
## explicit; go 1.18
|
||||
github.com/jesseduffield/generics/maps
|
||||
github.com/jesseduffield/generics/orderedset
|
||||
github.com/jesseduffield/generics/set
|
||||
# github.com/jesseduffield/go-git/v5 v5.14.1-0.20250407170251-e1a013310ccd
|
||||
## explicit; go 1.23.0
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue