@@ -20,13 +20,12 @@ pub mod sort;
20
20
pub fn call_builtin (
21
21
context : Context ,
22
22
loc : & Option < ExprLocation > ,
23
- ns : & str ,
24
23
name : & str ,
25
24
args : & ArgsDesc ,
26
25
) -> Result < Val > {
27
- Ok ( match ( ns , name as & str ) {
26
+ Ok ( match name as & str {
28
27
// arr/string/function
29
- ( "std" , " length") => parse_args ! ( context, "std.length" , args, 1 , [
28
+ " length" => parse_args ! ( context, "std.length" , args, 1 , [
30
29
0 , x: [ Val :: Str |Val :: Arr |Val :: Obj ] , vec![ ValType :: Str , ValType :: Arr , ValType :: Obj ] ;
31
30
] , {
32
31
Ok ( match x {
@@ -42,13 +41,13 @@ pub fn call_builtin(
42
41
} )
43
42
} ) ?,
44
43
// any
45
- ( "std" , " type") => parse_args ! ( context, "std.type" , args, 1 , [
44
+ " type" => parse_args ! ( context, "std.type" , args, 1 , [
46
45
0 , x, vec![ ] ;
47
46
] , {
48
47
Ok ( Val :: Str ( x. value_type( ) ?. name( ) . into( ) ) )
49
48
} ) ?,
50
49
// length, idx=>any
51
- ( "std" , " makeArray") => parse_args ! ( context, "std.makeArray" , args, 2 , [
50
+ " makeArray" => parse_args ! ( context, "std.makeArray" , args, 2 , [
52
51
0 , sz: [ Val :: Num ] !!Val :: Num , vec![ ValType :: Num ] ;
53
52
1 , func: [ Val :: Func ] !!Val :: Func , vec![ ValType :: Func ] ;
54
53
] , {
@@ -65,7 +64,7 @@ pub fn call_builtin(
65
64
Ok ( Val :: Arr ( Rc :: new( out) ) )
66
65
} ) ?,
67
66
// string
68
- ( "std" , " codepoint") => parse_args ! ( context, "std.codepoint" , args, 1 , [
67
+ " codepoint" => parse_args ! ( context, "std.codepoint" , args, 1 , [
69
68
0 , str : [ Val :: Str ] !!Val :: Str , vec![ ValType :: Str ] ;
70
69
] , {
71
70
assert!(
@@ -75,7 +74,7 @@ pub fn call_builtin(
75
74
Ok ( Val :: Num ( str . chars( ) . take( 1 ) . next( ) . unwrap( ) as u32 as f64 ) )
76
75
} ) ?,
77
76
// object, includeHidden
78
- ( "std" , " objectFieldsEx") => parse_args ! ( context, "std.objectFieldsEx" , args, 2 , [
77
+ " objectFieldsEx" => parse_args ! ( context, "std.objectFieldsEx" , args, 2 , [
79
78
0 , obj: [ Val :: Obj ] !!Val :: Obj , vec![ ValType :: Obj ] ;
80
79
1 , inc_hidden: [ Val :: Bool ] !!Val :: Bool , vec![ ValType :: Bool ] ;
81
80
] , {
@@ -88,7 +87,7 @@ pub fn call_builtin(
88
87
Ok ( Val :: Arr ( Rc :: new( out. into_iter( ) . map( Val :: Str ) . collect( ) ) ) )
89
88
} ) ?,
90
89
// object, field, includeHidden
91
- ( "std" , " objectHasEx") => parse_args ! ( context, "std.objectHasEx" , args, 3 , [
90
+ " objectHasEx" => parse_args ! ( context, "std.objectHasEx" , args, 3 , [
92
91
0 , obj: [ Val :: Obj ] !!Val :: Obj , vec![ ValType :: Obj ] ;
93
92
1 , f: [ Val :: Str ] !!Val :: Str , vec![ ValType :: Str ] ;
94
93
2 , inc_hidden: [ Val :: Bool ] !!Val :: Bool , vec![ ValType :: Bool ] ;
@@ -100,36 +99,36 @@ pub fn call_builtin(
100
99
. any( |( k, _v) | * k == * f) ,
101
100
) )
102
101
} ) ?,
103
- ( "std" , " primitiveEquals") => parse_args ! ( context, "std.primitiveEquals" , args, 2 , [
102
+ " primitiveEquals" => parse_args ! ( context, "std.primitiveEquals" , args, 2 , [
104
103
0 , a, vec![ ] ;
105
104
1 , b, vec![ ] ;
106
105
] , {
107
106
Ok ( Val :: Bool ( primitive_equals( & a, & b) ?) )
108
107
} ) ?,
109
108
// faster
110
- ( "std" , " equals") => parse_args ! ( context, "std.equals" , args, 2 , [
109
+ " equals" => parse_args ! ( context, "std.equals" , args, 2 , [
111
110
0 , a, vec![ ] ;
112
111
1 , b, vec![ ] ;
113
112
] , {
114
113
Ok ( Val :: Bool ( equals( & a, & b) ?) )
115
114
} ) ?,
116
- ( "std" , " modulo") => parse_args ! ( context, "std.modulo" , args, 2 , [
115
+ " modulo" => parse_args ! ( context, "std.modulo" , args, 2 , [
117
116
0 , a: [ Val :: Num ] !!Val :: Num , vec![ ValType :: Num ] ;
118
117
1 , b: [ Val :: Num ] !!Val :: Num , vec![ ValType :: Num ] ;
119
118
] , {
120
119
Ok ( Val :: Num ( a % b) )
121
120
} ) ?,
122
- ( "std" , " floor") => parse_args ! ( context, "std.floor" , args, 1 , [
121
+ " floor" => parse_args ! ( context, "std.floor" , args, 1 , [
123
122
0 , x: [ Val :: Num ] !!Val :: Num , vec![ ValType :: Num ] ;
124
123
] , {
125
124
Ok ( Val :: Num ( x. floor( ) ) )
126
125
} ) ?,
127
- ( "std" , " log") => parse_args ! ( context, "std.log" , args, 2 , [
126
+ " log" => parse_args ! ( context, "std.log" , args, 2 , [
128
127
0 , n: [ Val :: Num ] !!Val :: Num , vec![ ValType :: Num ] ;
129
128
] , {
130
129
Ok ( Val :: Num ( n. ln( ) ) )
131
130
} ) ?,
132
- ( "std" , " trace") => parse_args ! ( context, "std.trace" , args, 2 , [
131
+ " trace" => parse_args ! ( context, "std.trace" , args, 2 , [
133
132
0 , str : [ Val :: Str ] !!Val :: Str , vec![ ValType :: Str ] ;
134
133
1 , rest, vec![ ] ;
135
134
] , {
@@ -143,27 +142,27 @@ pub fn call_builtin(
143
142
eprintln!( " {}" , str ) ;
144
143
Ok ( rest)
145
144
} ) ?,
146
- ( "std" , " pow") => parse_args ! ( context, "std.modulo" , args, 2 , [
145
+ " pow" => parse_args ! ( context, "std.modulo" , args, 2 , [
147
146
0 , x: [ Val :: Num ] !!Val :: Num , vec![ ValType :: Num ] ;
148
147
1 , n: [ Val :: Num ] !!Val :: Num , vec![ ValType :: Num ] ;
149
148
] , {
150
149
Ok ( Val :: Num ( x. powf( n) ) )
151
150
} ) ?,
152
- ( "std" , " extVar") => parse_args ! ( context, "std.extVar" , args, 1 , [
151
+ " extVar" => parse_args ! ( context, "std.extVar" , args, 1 , [
153
152
0 , x: [ Val :: Str ] !!Val :: Str , vec![ ValType :: Str ] ;
154
153
] , {
155
154
Ok ( with_state( |s| s. settings( ) . ext_vars. get( & x) . cloned( ) ) . ok_or_else(
156
155
|| UndefinedExternalVariable ( x) ,
157
156
) ?)
158
157
} ) ?,
159
- ( "std" , " native") => parse_args ! ( context, "std.native" , args, 1 , [
158
+ " native" => parse_args ! ( context, "std.native" , args, 1 , [
160
159
0 , x: [ Val :: Str ] !!Val :: Str , vec![ ValType :: Str ] ;
161
160
] , {
162
161
Ok ( with_state( |s| s. settings( ) . ext_natives. get( & x) . cloned( ) ) . map( |v| Val :: Func ( Rc :: new( FuncVal :: NativeExt ( x. clone( ) , v) ) ) ) . ok_or_else(
163
162
|| UndefinedExternalFunction ( x) ,
164
163
) ?)
165
164
} ) ?,
166
- ( "std" , " filter") => parse_args ! ( context, "std.filter" , args, 2 , [
165
+ " filter" => parse_args ! ( context, "std.filter" , args, 2 , [
167
166
0 , func: [ Val :: Func ] !!Val :: Func , vec![ ValType :: Func ] ;
168
167
1 , arr: [ Val :: Arr ] !!Val :: Arr , vec![ ValType :: Arr ] ;
169
168
] , {
@@ -181,7 +180,7 @@ pub fn call_builtin(
181
180
) ) )
182
181
} ) ?,
183
182
// faster
184
- ( "std" , " foldl") => parse_args ! ( context, "std.foldl" , args, 3 , [
183
+ " foldl" => parse_args ! ( context, "std.foldl" , args, 3 , [
185
184
0 , func: [ Val :: Func ] !!Val :: Func , vec![ ValType :: Func ] ;
186
185
1 , arr: [ Val :: Arr ] !!Val :: Arr , vec![ ValType :: Arr ] ;
187
186
2 , init, vec![ ] ;
@@ -193,7 +192,7 @@ pub fn call_builtin(
193
192
Ok ( acc)
194
193
} ) ?,
195
194
// faster
196
- ( "std" , " foldr") => parse_args ! ( context, "std.foldr" , args, 3 , [
195
+ " foldr" => parse_args ! ( context, "std.foldr" , args, 3 , [
197
196
0 , func: [ Val :: Func ] !!Val :: Func , vec![ ValType :: Func ] ;
198
197
1 , arr: [ Val :: Arr ] !!Val :: Arr , vec![ ValType :: Arr ] ;
199
198
2 , init, vec![ ] ;
@@ -206,7 +205,7 @@ pub fn call_builtin(
206
205
} ) ?,
207
206
// faster
208
207
#[ allow( non_snake_case) ]
209
- ( "std" , " sortImpl") => parse_args ! ( context, "std.sort" , args, 2 , [
208
+ " sortImpl" => parse_args ! ( context, "std.sort" , args, 2 , [
210
209
0 , arr: [ Val :: Arr ] !!Val :: Arr , vec![ ValType :: Arr ] ;
211
210
1 , keyF: [ Val :: Func ] !!Val :: Func , vec![ ValType :: Func ] ;
212
211
] , {
@@ -216,7 +215,7 @@ pub fn call_builtin(
216
215
Ok ( Val :: Arr ( sort:: sort( context, arr, & keyF) ?) )
217
216
} ) ?,
218
217
// faster
219
- ( "std" , " format") => parse_args ! ( context, "std.format" , args, 2 , [
218
+ " format" => parse_args ! ( context, "std.format" , args, 2 , [
220
219
0 , str : [ Val :: Str ] !!Val :: Str , vec![ ValType :: Str ] ;
221
220
1 , vals, vec![ ]
222
221
] , {
@@ -229,7 +228,7 @@ pub fn call_builtin(
229
228
} )
230
229
} ) ?,
231
230
// faster
232
- ( "std" , " range") => parse_args ! ( context, "std.range" , args, 2 , [
231
+ " range" => parse_args ! ( context, "std.range" , args, 2 , [
233
232
0 , from: [ Val :: Num ] !!Val :: Num , vec![ ValType :: Num ] ;
234
233
1 , to: [ Val :: Num ] !!Val :: Num , vec![ ValType :: Num ] ;
235
234
] , {
@@ -239,7 +238,7 @@ pub fn call_builtin(
239
238
}
240
239
Ok ( Val :: Arr ( Rc :: new( out) ) )
241
240
} ) ?,
242
- ( "std" , " char") => parse_args ! ( context, "std.char" , args, 1 , [
241
+ " char" => parse_args ! ( context, "std.char" , args, 1 , [
243
242
0 , n: [ Val :: Num ] !!Val :: Num , vec![ ValType :: Num ] ;
244
243
] , {
245
244
let mut out = String :: new( ) ;
@@ -248,18 +247,18 @@ pub fn call_builtin(
248
247
) ?) ;
249
248
Ok ( Val :: Str ( out. into( ) ) )
250
249
} ) ?,
251
- ( "std" , " encodeUTF8") => parse_args ! ( context, "std.encodeUtf8" , args, 1 , [
250
+ " encodeUTF8" => parse_args ! ( context, "std.encodeUtf8" , args, 1 , [
252
251
0 , str : [ Val :: Str ] !!Val :: Str , vec![ ValType :: Str ] ;
253
252
] , {
254
253
Ok ( Val :: Arr ( Rc :: new( str . bytes( ) . map( |b| Val :: Num ( b as f64 ) ) . collect( ) ) ) )
255
254
} ) ?,
256
- ( "std" , " md5") => parse_args ! ( context, "std.md5" , args, 1 , [
255
+ " md5" => parse_args ! ( context, "std.md5" , args, 1 , [
257
256
0 , str : [ Val :: Str ] !!Val :: Str , vec![ ValType :: Str ] ;
258
257
] , {
259
258
Ok ( Val :: Str ( format!( "{:x}" , md5:: compute( & str . as_bytes( ) ) ) . into( ) ) )
260
259
} ) ?,
261
260
// faster
262
- ( "std" , " base64") => parse_args ! ( context, "std.base64" , args, 1 , [
261
+ " base64" => parse_args ! ( context, "std.base64" , args, 1 , [
263
262
0 , input: [ Val :: Str | Val :: Arr ] , vec![ ValType :: Arr , ValType :: Str ] ;
264
263
] , {
265
264
Ok ( Val :: Str ( match input {
@@ -275,7 +274,7 @@ pub fn call_builtin(
275
274
} ) )
276
275
} ) ?,
277
276
// faster
278
- ( "std" , " join") => parse_args ! ( context, "std.join" , args, 2 , [
277
+ " join" => parse_args ! ( context, "std.join" , args, 2 , [
279
278
0 , sep: [ Val :: Str |Val :: Arr ] , vec![ ValType :: Str , ValType :: Arr ] ;
280
279
1 , arr: [ Val :: Arr ] !!Val :: Arr , vec![ ValType :: Arr ] ;
281
280
] , {
@@ -322,13 +321,13 @@ pub fn call_builtin(
322
321
} )
323
322
} ) ?,
324
323
// Faster
325
- ( "std" , " escapeStringJson") => parse_args ! ( context, "std.escapeStringJson" , args, 1 , [
324
+ " escapeStringJson" => parse_args ! ( context, "std.escapeStringJson" , args, 1 , [
326
325
0 , str_: [ Val :: Str ] !!Val :: Str , vec![ ValType :: Str ] ;
327
326
] , {
328
327
Ok ( Val :: Str ( escape_string_json( & str_) . into( ) ) )
329
328
} ) ?,
330
329
// Faster
331
- ( "std" , " manifestJsonEx") => parse_args ! ( context, "std.manifestJsonEx" , args, 2 , [
330
+ " manifestJsonEx" => parse_args ! ( context, "std.manifestJsonEx" , args, 2 , [
332
331
0 , value, vec![ ] ;
333
332
1 , indent: [ Val :: Str ] !!Val :: Str , vec![ ValType :: Str ] ;
334
333
] , {
@@ -338,18 +337,18 @@ pub fn call_builtin(
338
337
} ) ?. into( ) ) )
339
338
} ) ?,
340
339
// Faster
341
- ( "std" , " reverse") => parse_args ! ( context, "std.reverse" , args, 1 , [
340
+ " reverse" => parse_args ! ( context, "std.reverse" , args, 1 , [
342
341
0 , arr: [ Val :: Arr ] !!Val :: Arr , vec![ ValType :: Arr ] ;
343
342
] , {
344
343
let mut marr = arr;
345
344
Rc :: make_mut( & mut marr) . reverse( ) ;
346
345
Ok ( Val :: Arr ( marr) )
347
346
} ) ?,
348
- ( "std" , " id") => parse_args ! ( context, "std.id" , args, 1 , [
347
+ " id" => parse_args ! ( context, "std.id" , args, 1 , [
349
348
0 , v, vec![ ] ;
350
349
] , {
351
350
Ok ( v)
352
351
} ) ?,
353
- ( ns , name) => throw ! ( IntrinsicNotFound ( ns . into ( ) , name. into( ) ) ) ,
352
+ name => throw ! ( IntrinsicNotFound ( name. into( ) ) ) ,
354
353
} )
355
354
}
0 commit comments