@@ -15,18 +15,9 @@ import (
15
15
var FilepathDir = expr .Function (
16
16
"filepath_dir" ,
17
17
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
28
19
},
29
- filepath .Dir ,
20
+ filepath .Dir , // string => string
30
21
)
31
22
32
23
func UniqSlice [T cmp.Ordered ](in []T ) []T {
@@ -40,31 +31,25 @@ func UniqSlice[T cmp.Ordered](in []T) []T {
40
31
var Uniq = expr .Function (
41
32
"uniq" ,
42
33
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 ) {
50
35
case []any :
51
36
var result []string
52
37
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 ))
55
40
}
56
41
57
42
return UniqSlice (result ), nil
58
43
59
44
case []string :
60
- return UniqSlice (val ), nil
45
+ return UniqSlice (elements ), nil
61
46
62
47
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 ] ))
64
49
}
65
50
},
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)
68
53
)
69
54
70
55
// Override built-in duration() function to provide support for additional periods
@@ -74,36 +59,16 @@ var Uniq = expr.Function(
74
59
var Duration = expr .Function (
75
60
"duration" ,
76
61
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
87
63
},
88
- time .ParseDuration ,
64
+ time .ParseDuration , // string => (time.Duration, error)
89
65
)
90
66
91
67
var LimitPathDepthTo = expr .Function (
92
68
"limit_path_depth_to" ,
93
69
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
107
72
108
73
chunks := strings .Split (input , "/" )
109
74
if len (chunks ) <= length {
@@ -112,5 +77,5 @@ var LimitPathDepthTo = expr.Function(
112
77
113
78
return strings .Join (chunks [0 :length - 1 ], "/" ), nil // nosemgrep
114
79
},
115
- new (func (string , int ) string ),
80
+ new (func (string , int ) string ), // (string, int) => string
116
81
)
0 commit comments