46 lines
789 B
Go
46 lines
789 B
Go
package builtins
|
|
|
|
import (
|
|
"context"
|
|
"strings"
|
|
"ucl.lmika.dev/ucl"
|
|
)
|
|
|
|
func Strs() ucl.Module {
|
|
return ucl.Module{
|
|
Name: "strs",
|
|
Builtins: map[string]ucl.BuiltinHandler{
|
|
"to-upper": toUpper,
|
|
"to-lower": toLower,
|
|
"trim": trim,
|
|
},
|
|
}
|
|
}
|
|
|
|
func toUpper(ctx context.Context, args ucl.CallArgs) (any, error) {
|
|
var s string
|
|
if err := args.Bind(&s); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return strings.ToUpper(s), nil
|
|
}
|
|
|
|
func toLower(ctx context.Context, args ucl.CallArgs) (any, error) {
|
|
var s string
|
|
if err := args.Bind(&s); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return strings.ToLower(s), nil
|
|
}
|
|
|
|
func trim(ctx context.Context, args ucl.CallArgs) (any, error) {
|
|
var s string
|
|
if err := args.Bind(&s); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return strings.TrimSpace(s), nil
|
|
}
|