package ice
import (
"path"
"reflect"
"strings"
kit "shylinux.com/x/toolkits"
)
var renderList = map[string]func(*Message, string, ...interface{}) string{}
func AddRender(key string, render func(*Message, string, ...interface{}) string) {
renderList[key] = render
}
func Render(m *Message, cmd string, args ...interface{}) string {
if render, ok := renderList[cmd]; ok {
m.Debug("render: %v %v", cmd, kit.FileLine(render, 3))
return render(m, cmd, args...)
}
switch arg := kit.Simple(args...); cmd {
case RENDER_ANCHOR: // [name] link
return kit.Format(`%s`, kit.Select(arg[0], arg, 1), arg[0])
case RENDER_BUTTON: // name...
if m._cmd == nil || m._cmd.Meta == nil {
break
}
list := []string{}
for _, k := range kit.Split(kit.Join(arg)) {
list = append(list, kit.Format(``,
k, kit.Select(k, kit.Value(m._cmd.Meta, kit.Keys("_trans", k)), m.Option("language") != "en")))
}
return kit.Join(list, " ")
case RENDER_IMAGES: // src [size]
return kit.Format(`
`, arg[0], kit.Select("120", arg, 1))
case RENDER_VIDEOS: // src [size]
return kit.Format(`