apply pr feedback
This commit is contained in:
@@ -232,7 +232,7 @@ func statementToIPLD(statement Statement) (datamodel.Node, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
err = listBuilder.AssembleValue().AssignString(statement.pattern)
|
||||
err = listBuilder.AssembleValue().AssignString(string(statement.pattern))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -112,7 +112,7 @@ func matchStatement(statement Statement, node ipld.Node) bool {
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
return globMatch(s.pattern, v)
|
||||
return s.pattern.match(v)
|
||||
}
|
||||
case KindAll:
|
||||
if s, ok := statement.(quantifier); ok {
|
||||
|
||||
@@ -3,6 +3,8 @@ package policy
|
||||
// https://github.com/ucan-wg/delegation/blob/4094d5878b58f5d35055a3b93fccda0b8329ebae/README.md#policy
|
||||
|
||||
import (
|
||||
"errors"
|
||||
|
||||
"github.com/ipld/go-ipld-prime"
|
||||
|
||||
"github.com/ucan-wg/go-ucan/capability/policy/selector"
|
||||
@@ -87,9 +89,23 @@ func Or(stmts ...Statement) Statement {
|
||||
return connective{kind: KindOr, statements: stmts}
|
||||
}
|
||||
|
||||
type wildcardPattern string
|
||||
|
||||
func parseWildcardPattern(pattern string) (wildcardPattern, error) {
|
||||
if !validateGlobPattern(pattern) {
|
||||
return "", errors.New("invalid wildcard pattern")
|
||||
}
|
||||
|
||||
return wildcardPattern(pattern), nil
|
||||
}
|
||||
|
||||
func (wp wildcardPattern) match(str string) bool {
|
||||
return globMatch(string(wp), str)
|
||||
}
|
||||
|
||||
type wildcard struct {
|
||||
selector selector.Selector
|
||||
pattern string
|
||||
pattern wildcardPattern
|
||||
}
|
||||
|
||||
func (n wildcard) Kind() string {
|
||||
@@ -97,7 +113,12 @@ func (n wildcard) Kind() string {
|
||||
}
|
||||
|
||||
func Like(selector selector.Selector, pattern string) (Statement, error) {
|
||||
return wildcard{selector: selector, pattern: pattern}, nil
|
||||
parsedPattern, err := parseWildcardPattern(pattern)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return wildcard{selector: selector, pattern: parsedPattern}, nil
|
||||
}
|
||||
|
||||
type quantifier struct {
|
||||
|
||||
Reference in New Issue
Block a user