adapt KindAll too

This commit is contained in:
Fabio Bozzo
2024-10-21 16:39:19 +02:00
parent 948945bdf1
commit d44bf32fad

View File

@@ -121,15 +121,38 @@ func matchStatement(statement Statement, node ipld.Node) bool {
} }
case KindAll: case KindAll:
if s, ok := statement.(quantifier); ok { if s, ok := statement.(quantifier); ok {
_, many, err := s.selector.Select(node) one, many, err := s.selector.Select(node)
if err != nil || len(many) == 0 { if err != nil {
return false return false
} }
for _, n := range many { if one != nil {
ok := matchStatement(s.statement, n) it := one.ListIterator()
if !ok { if it != nil {
return false for !it.Done() {
_, v, err := it.Next()
if err != nil {
return false
}
ok := matchStatement(s.statement, v)
if !ok {
return false
}
}
} else {
ok := matchStatement(s.statement, one)
if !ok {
return false
}
}
}
if len(many) > 0 {
for _, n := range many {
ok := matchStatement(s.statement, n)
if !ok {
return false
}
} }
} }