added sort support

This commit is contained in:
ston1th 2017-08-30 22:01:19 +02:00
commit 1674abae73
5 changed files with 377 additions and 66 deletions

View file

@ -29,14 +29,17 @@ type Filter []Example
func (v Filter) Len() int { return len(v) }
func (v Filter) Index(i int) interface{} { return v[i] }
func (v *Filter) Remove(i, j int) { *v = append((*v)[:i], (*v)[j:]...) }
//func (v Filter) Remove(i, j int) { v = append(v[:i], v[j:]...) }
func (v *Filter) Remove(i, j int) { *v = append((*v)[:i], (*v)[j:]...) }
// Example data
var data = Filter{
{"str1", 42, true, Struct1{"s1", Struct2{1}}},
{"str3", 42, true, Struct1{"s3", Struct2{3}}},
{"2str", 42, true, Struct1{"s2", Struct2{2}}},
{"str3", 42, false, Struct1{"s3", Struct2{3}}},
{":*", 42, false, Struct1{"s3", Struct2{3}}},
{"str1", 42, false, Struct1{"s1", Struct2{1}}},
{":*", 42, false, Struct1{"s4", Struct2{4}}},
}
func main() {
@ -48,8 +51,22 @@ func main() {
}
}
f, _ = filter.NewQuery("Struct.Struct.Int:1 Struct.Struct.Int:2 String::", filter.OR)
f.Filter(&data)
err := f.Filter(&data)
if err != nil {
fmt.Println(err)
}
for _, v := range data {
fmt.Println("Interface:", v)
}
s, err := filter.NewQuery("sort:Bool:desc", filter.AND)
if err != nil {
fmt.Println(err)
}
err = s.Filter(&data)
if err != nil {
fmt.Println(err)
}
for _, v := range data {
fmt.Println("Sort:", v)
}
}