Skip to content

Commit d62f508

Browse files
committed
refactor: stdlib cleanup and simplification
1 parent aa53692 commit d62f508

File tree

1 file changed

+14
-49
lines changed

1 file changed

+14
-49
lines changed

pkg/stdlib/functions.go

+14-49
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,9 @@ import (
1515
var FilepathDir = expr.Function(
1616
"filepath_dir",
1717
func(params ...any) (any, error) {
18-
if len(params) != 1 {
19-
return nil, NewInvalidNumberOfArgumentsError("filepath_dir", "", 1, len(params))
20-
}
21-
22-
val, ok := params[0].(string)
23-
if !ok {
24-
return nil, NewInvalidArgumentTypeError("filepath_dir", "input must be string")
25-
}
26-
27-
return filepath.Dir(val), nil
18+
return filepath.Dir(params[0].(string)), nil //nolint:forcetypeassert
2819
},
29-
filepath.Dir,
20+
filepath.Dir, // string => string
3021
)
3122

3223
func UniqSlice[T cmp.Ordered](in []T) []T {
@@ -40,31 +31,25 @@ func UniqSlice[T cmp.Ordered](in []T) []T {
4031
var Uniq = expr.Function(
4132
"uniq",
4233
func(args ...any) (any, error) {
43-
if len(args) != 1 {
44-
return nil, NewInvalidNumberOfArgumentsError("uniq", "", 1, len(args))
45-
}
46-
47-
arg := args[0]
48-
49-
switch val := arg.(type) {
34+
switch elements := args[0].(type) {
5035
case []any:
5136
var result []string
5237

53-
for _, v := range val {
54-
result = append(result, fmt.Sprintf("%s", v))
38+
for _, element := range elements {
39+
result = append(result, fmt.Sprintf("%s", element))
5540
}
5641

5742
return UniqSlice(result), nil
5843

5944
case []string:
60-
return UniqSlice(val), nil
45+
return UniqSlice(elements), nil
6146

6247
default:
63-
return nil, NewInvalidArgumentTypeError("uniq", fmt.Sprintf("invalid input, must be an array of [string] or [interface], got %T", arg))
48+
return nil, NewInvalidArgumentTypeError("uniq", fmt.Sprintf("invalid input, must be an array of [string] or [interface], got %T", args[0]))
6449
}
6550
},
66-
new(func([]string) []string),
67-
new(func([]any) []string),
51+
new(func([]string) []string), // []string -> []string
52+
new(func([]any) []string), // []any -> []string (when using map() that always return []any)
6853
)
6954

7055
// Override built-in duration() function to provide support for additional periods
@@ -74,36 +59,16 @@ var Uniq = expr.Function(
7459
var Duration = expr.Function(
7560
"duration",
7661
func(args ...any) (any, error) {
77-
if len(args) != 1 {
78-
return nil, NewInvalidNumberOfArgumentsError("duration", "", 1, len(args))
79-
}
80-
81-
val, ok := args[0].(string)
82-
if !ok {
83-
return nil, NewInvalidArgumentTypeError("duration", fmt.Sprintf("invalid input, must be a string, got %T", args[0]))
84-
}
85-
86-
return str2duration.ParseDuration(val)
62+
return str2duration.ParseDuration(args[0].(string)) //nolint:forcetypeassert
8763
},
88-
time.ParseDuration,
64+
time.ParseDuration, // string => (time.Duration, error)
8965
)
9066

9167
var LimitPathDepthTo = expr.Function(
9268
"limit_path_depth_to",
9369
func(args ...any) (any, error) {
94-
if len(args) != 2 {
95-
return nil, NewInvalidNumberOfArgumentsError("limit_path_depth_to", "", 2, len(args))
96-
}
97-
98-
input, ok := args[0].(string)
99-
if !ok {
100-
return nil, NewInvalidArgumentTypeError("limit_path_depth_to", fmt.Sprintf("invalid input, first argument must be a 'string', got %T", args[0]))
101-
}
102-
103-
length, ok := args[1].(int)
104-
if !ok {
105-
return nil, NewInvalidArgumentTypeError("limit_path_depth_to", fmt.Sprintf("invalid input, first argument must be an 'int', got %T", args[0]))
106-
}
70+
input := args[0].(string) //nolint:forcetypeassert
71+
length := args[1].(int) //nolint:forcetypeassert
10772

10873
chunks := strings.Split(input, "/")
10974
if len(chunks) <= length {
@@ -112,5 +77,5 @@ var LimitPathDepthTo = expr.Function(
11277

11378
return strings.Join(chunks[0:length-1], "/"), nil // nosemgrep
11479
},
115-
new(func(string, int) string),
80+
new(func(string, int) string), // (string, int) => string
11681
)

0 commit comments

Comments
 (0)