merge v0.23.0-rc changes
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
package picker
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/pocketbase/pocketbase/tools/tokenizer"
|
||||
)
|
||||
|
||||
var Modifiers = map[string]ModifierFactoryFunc{}
|
||||
|
||||
type ModifierFactoryFunc func(args ...string) (Modifier, error)
|
||||
|
||||
type Modifier interface {
|
||||
// Modify executes the modifier and returns a new modified value.
|
||||
Modify(value any) (any, error)
|
||||
}
|
||||
|
||||
func initModifer(rawModifier string) (Modifier, error) {
|
||||
t := tokenizer.NewFromString(rawModifier)
|
||||
t.Separators('(', ')', ',', ' ')
|
||||
t.IgnoreParenthesis(true)
|
||||
|
||||
parts, err := t.ScanAll()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if len(parts) == 0 {
|
||||
return nil, fmt.Errorf("invalid or empty modifier expression %q", rawModifier)
|
||||
}
|
||||
|
||||
name := parts[0]
|
||||
args := parts[1:]
|
||||
|
||||
factory, ok := Modifiers[name]
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("missing or invalid modifier %q", name)
|
||||
}
|
||||
|
||||
return factory(args...)
|
||||
}
|
||||
Reference in New Issue
Block a user