fork github.com/doug-martin
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
package util
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"reflect"
|
||||
"sort"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type ValueSlice []reflect.Value
|
||||
|
||||
func (vs ValueSlice) Len() int { return len(vs) }
|
||||
func (vs ValueSlice) Less(i, j int) bool { return vs[i].String() < vs[j].String() }
|
||||
func (vs ValueSlice) Swap(i, j int) { vs[i], vs[j] = vs[j], vs[i] }
|
||||
|
||||
func (vs ValueSlice) Equal(other ValueSlice) bool {
|
||||
sort.Sort(other)
|
||||
for i, key := range vs {
|
||||
if other[i].String() != key.String() {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func (vs ValueSlice) String() string {
|
||||
vals := make([]string, vs.Len())
|
||||
for i, key := range vs {
|
||||
vals[i] = fmt.Sprintf("%q", key.String())
|
||||
}
|
||||
sort.Strings(vals)
|
||||
return fmt.Sprintf("[%s]", strings.Join(vals, ","))
|
||||
}
|
||||
Reference in New Issue
Block a user