package ice
import (
"net/http"
"path"
"strings"
kit "shylinux.com/x/toolkits"
)
func AddRender(key string, render func(*Message, ...Any) string) { Info.render[key] = render }
func RenderAction(key ...string) Actions {
return Actions{CTX_INIT: {Hand: func(m *Message, arg ...string) {
cmd := m.CommandKey()
kit.For(key, func(key string) {
AddRender(key, func(m *Message, arg ...Any) string { return m.Cmd(cmd, key, arg).Result() })
})
}}}
}
func Render(m *Message, cmd string, args ...Any) string {
if render, ok := Info.render[cmd]; ok {
return render(m, args...)
}
switch arg := kit.Simple(args...); cmd {
case RENDER_BUTTON:
list := []string{}
for _, k := range args {
switch k := k.(type) {
case []string:
kit.For(k, func(k string) { list = append(list, Render(m, RENDER_BUTTON, k)) })
case string:
if strings.HasPrefix(k, "`, k, k)) })
case Maps:
kit.For(k, func(k, v string) {
list = append(list, kit.Format(``, k, kit.Select(k, v, m.Option(MSG_LANGUAGE) == "zh")))
})
case Map:
kit.For(k, func(k, v string) {
list = append(list, kit.Format(``, k, kit.Select(k, v, m.Option(MSG_LANGUAGE) == "zh")))
})
default:
list = append(list, Render(m, RENDER_BUTTON, kit.LowerCapital(kit.Format(k))))
}
}
return strings.Join(list, "")
case RENDER_ANCHOR:
return kit.Format(`%s`, kit.Select(arg[0], arg, 1), arg[0])
case RENDER_IMAGES:
return kit.Format(`
`, arg[0], m.Option(MSG_HEIGHT), m.Option(MSG_WIDTH))
case RENDER_VIDEOS:
if kit.Int(m.Option(MSG_HEIGHT)) < kit.Int(m.Option(MSG_WIDTH)) {
return kit.Format(`