add logger
fix return nil bug
This commit is contained in:
parent
c58bf345c6
commit
6d63360d4c
@ -48,8 +48,14 @@ func _makeJsValue(ctx *plugin.Context, in interface{}, n int, key string, plugin
|
||||
v = reflect.ValueOf(in)
|
||||
}
|
||||
for v.Kind() == reflect.Ptr || v.Kind() == reflect.Interface {
|
||||
if v.IsNil() {
|
||||
return jsCtx.Null()
|
||||
}
|
||||
v = v.Elem()
|
||||
}
|
||||
if (v.Kind() == reflect.Slice || v.Kind() == reflect.Map || v.Kind() == reflect.Func) && v.IsNil() {
|
||||
return jsCtx.Null()
|
||||
}
|
||||
|
||||
switch v.Kind() {
|
||||
case reflect.Bool:
|
||||
|
46
gojs.go
46
gojs.go
@ -119,22 +119,60 @@ func New(globals map[string]interface{}, logger *log.Logger) *JSRuntime {
|
||||
// 注入 console
|
||||
rt.JsCtx.Globals().Set("console", MakeJsValue(rt.GoCtx, map[string]interface{}{
|
||||
"log": func(args ...interface{}) {
|
||||
fmt.Println(args...)
|
||||
fmt.Println(makeStringArray(args, u.TextNone, u.BgNone)...)
|
||||
},
|
||||
"info": func(args ...interface{}) {
|
||||
fmt.Println(u.Cyan(fmt.Sprintln(args...)))
|
||||
fmt.Println(makeStringArray(args, u.TextCyan, u.BgNone)...)
|
||||
},
|
||||
"warn": func(args ...interface{}) {
|
||||
fmt.Println(u.BYellow(fmt.Sprintln(args...)))
|
||||
fmt.Println(makeStringArray(args, u.TextBlack, u.BgYellow)...)
|
||||
},
|
||||
"error": func(args ...interface{}) {
|
||||
fmt.Println(u.BRed(fmt.Sprintln(args...)))
|
||||
fmt.Println(makeStringArray(args, u.TextWhite, u.BgRed)...)
|
||||
},
|
||||
}, false))
|
||||
|
||||
// 注入 logger
|
||||
rt.JsCtx.Globals().Set("logger", MakeJsValue(rt.GoCtx, map[string]interface{}{
|
||||
"debug": func(message string, args *map[string]interface{}) {
|
||||
rt.logger.Debug(message, makeMapToArray(args)...)
|
||||
},
|
||||
"info": func(message string, args *map[string]interface{}) {
|
||||
rt.logger.Info(message, makeMapToArray(args)...)
|
||||
},
|
||||
"warn": func(message string, args *map[string]interface{}) {
|
||||
rt.logger.Warning(message, makeMapToArray(args)...)
|
||||
},
|
||||
"error": func(message string, args *map[string]interface{}) {
|
||||
rt.logger.Error(message, makeMapToArray(args)...)
|
||||
},
|
||||
}, false))
|
||||
|
||||
return rt
|
||||
}
|
||||
|
||||
func makeMapToArray(args *map[string]interface{}) []interface{} {
|
||||
outArgs := make([]interface{}, 0)
|
||||
if args != nil {
|
||||
for k, v := range *args {
|
||||
outArgs = append(outArgs, k, v)
|
||||
}
|
||||
}
|
||||
return outArgs
|
||||
}
|
||||
|
||||
func makeStringArray(args []interface{}, color u.TextColor, bg u.BgColor) []interface{} {
|
||||
stringArgs := make([]interface{}, len(args))
|
||||
for i, v := range args {
|
||||
if color != u.TextNone || bg != u.BgNone {
|
||||
stringArgs[i] = u.Color(u.StringP(v), color, bg)
|
||||
} else {
|
||||
stringArgs[i] = u.StringP(v)
|
||||
}
|
||||
}
|
||||
return stringArgs
|
||||
}
|
||||
|
||||
func Run(code string, globals map[string]interface{}, logger *log.Logger) (out interface{}, err error, stack string) {
|
||||
rt := New(globals, logger)
|
||||
defer func() {
|
||||
|
Loading…
Reference in New Issue
Block a user