51 lines
1.2 KiB
Go
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
|
|
}
|