import (
"github.com/expr-lang/expr"
"github.com/samber/lo"
)
const sliceToMapFuncParamsLen = 2
func sliceToMapFunc() expr.Option {
return expr.Function(
"SliceToMap",
func(params ...any) (any, error) {
if len(params) != 2 {
return nil, invalidParametersNumberError("SliceToMap", sliceToMapFuncParamsLen, len(params))
}
slice, ok := params[0].([]any)
if !ok {
return nil, invalidParameterTypeError("SliceToMap", 0, "[]any", TypeOf(params[0]))
}
fn, ok := params[1].(func(any) (string, any))
if !ok {
return nil, invalidParameterTypeError("SliceToMap", 1, "func(any) (string, any)", TypeOf(params[1]))
}
return lo.SliceToMap(slice, fn), nil
},
new(func([]any, func(any) (string, any)) (any, error)),
)
}
SliceToMap(.data, {{string(#.key):#.value}})
SliceToMap(.data, {#.key,#.value})