41 lines
688 B
Go
41 lines
688 B
Go
package version
|
|
|
|
// List is a slice of versions that implements sort.Interface.
|
|
type List []*Version
|
|
|
|
// Match tests versions against a constraint and returns a new List of matching versions only.
|
|
func (list List) Match(constraints ...*Constraint) List {
|
|
filtered := List{}
|
|
|
|
for _, v := range list {
|
|
ok := true
|
|
for _, c := range constraints {
|
|
if !v.Match(c) {
|
|
ok = false
|
|
break
|
|
}
|
|
}
|
|
|
|
if ok {
|
|
filtered = append(filtered, v)
|
|
}
|
|
}
|
|
|
|
return filtered
|
|
}
|
|
|
|
func (list List) Len() int {
|
|
return len(list)
|
|
}
|
|
|
|
func (list List) Less(i, j int) bool {
|
|
return list[i].Less(list[j])
|
|
}
|
|
|
|
func (list List) Swap(i, j int) {
|
|
a := list[i]
|
|
b := list[j]
|
|
list[i] = b
|
|
list[j] = a
|
|
}
|