-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpackage.go
36 lines (33 loc) · 954 Bytes
/
package.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package script
func packageDefine(packageName string, calls map[string]CallFunc) map[string]Symbol {
packageCalls := make(map[string]Symbol)
for funcName, call := range calls {
packageCalls[funcName] = &FunctionSymbol{
Package: packageName,
Name: funcName,
ScopeLevel: 1,
Call: call,
}
}
return packageCalls
}
var packages = map[string]map[string]Symbol{
// net
"net": packageDefine("net", map[string]CallFunc{
"get": func(i *Interpreter, args []interface{}) interface{} {
return "net.get"
},
}),
// message
"msg": packageDefine("msg", map[string]CallFunc{
"send": func(i *Interpreter, args []interface{}) interface{} {
return "message.send" + args[0].(string)
},
"filter": func(i *Interpreter, args []interface{}) interface{} {
return len(args[0].(string)) > 5
},
"reduce": func(i *Interpreter, args []interface{}) interface{} {
return args[1].(string) + args[0].(string)
},
}),
}