package ice
import (
"net/http"
"path"
"strings"
"shylinux.com/x/icebergs/base/web/html"
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...)
}
trans := kit.Value(m._cmd.Meta, CTX_TRANS)
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, kit.Select(k, kit.Value(trans, k), !m.IsEnglish())))
})
case Map, Maps:
kit.For(k, func(k, v string) {
list = append(list, kit.Format(``, k, kit.Select(v, k, m.IsEnglish())))
})
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_SCRIPT:
return kit.Format(`%s
`, arg[0])
case RENDER_IMAGES:
if len(arg) > 1 {
return kit.Format(`
`, arg[0], arg[1])
}
return kit.Format(`
`, arg[0])
case RENDER_VIDEOS:
return kit.Format(`