gojs/common.go
Star f37b64c2df many update
support pool
2024-10-07 23:02:11 +08:00

51 lines
1.2 KiB
Go

package gojs
import (
"apigo.cc/apigo/gojs/dop251/goja"
"github.com/ssgo/log"
"github.com/ssgo/u"
"reflect"
)
func MakeLogger(logger *log.Logger) Map {
return map[string]any{
"info": func(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value {
args := MakeArgs(&argsIn, vm).Check(1)
logger.Info(args.Str(0), args.Map2Arr(1)...)
return nil
},
"warn": func(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value {
args := MakeArgs(&argsIn, vm).Check(1)
logger.Warning(args.Str(0), args.Map2Arr(1)...)
return nil
},
"error": func(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value {
args := MakeArgs(&argsIn, vm).Check(1)
logger.Error(args.Str(0), args.Map2Arr(1)...)
return nil
},
"debug": func(argsIn goja.FunctionCall, vm *goja.Runtime) goja.Value {
args := MakeArgs(&argsIn, vm).Check(1)
logger.Debug(args.Str(0), args.Map2Arr(1)...)
return nil
},
}
}
func MakeMap(structObj any) Map {
m := Map{}
from := u.RealValue(reflect.ValueOf(structObj))
if from.Kind() == reflect.Struct {
st := u.FlatStruct(structObj)
for k, v := range st.Values {
k = u.GetLowerName(k)
m[k] = v.Interface()
}
for k, v := range st.MethodValues {
k = u.GetLowerName(k)
m[k] = v.Interface()
}
}
return m
}