package wiki
import (
"strings"
ice "shylinux.com/x/icebergs"
"shylinux.com/x/icebergs/base/nfs"
"shylinux.com/x/icebergs/base/ssh"
kit "shylinux.com/x/toolkits"
)
func _spark_show(m *ice.Message, name, text string, arg ...string) {
for i := 0; i < len(arg); i += 2 {
m.Option(arg[i], arg[i+1])
}
if name == "" {
_wiki_template(m, SPARK, name, text, arg...)
return
}
prompt := kit.Select(name+"> ", m.Config(kit.Keys(ssh.PROMPT, name)))
m.Echo(`
`, arg[0])}
for _, l := range strings.Split(strings.Join(arg[1:], ice.NL), ice.NL) {
list = append(list, "
")
switch arg[0] {
case SHELL:
list = append(list, Format("label", "$ "))
default:
list = append(list, Format("label", "> "))
}
list = append(list, Format("span", l))
list = append(list, "
")
}
list = append(list, "
")
return strings.Join(list, "")
})
}},
"md": {Name: "md file", Help: "md", Hand: func(m *ice.Message, arg ...string) {
block, code := "", []string{}
text := func() {
if len(code) > 0 {
m.Cmdy(SPARK, kit.Join(code, ice.NL))
code = []string{}
}
}
m.Cmd(nfs.CAT, m.Option(nfs.FILE), func(line string) {
for _, ls := range [][]string{
[]string{"# ", TITLE}, []string{"## ", TITLE, CHAPTER}, []string{"### ", TITLE, SECTION},
} {
if strings.HasPrefix(line, ls[0]) {
text()
m.Cmdy(ls[1:], strings.TrimPrefix(line, ls[0]))
return
}
}
if strings.HasPrefix(line, "```") {
if block == "" {
text()
block = "```"
} else {
m.Cmdy(SPARK, SHELL, kit.Join(code, ice.NL))
block, code = "", []string{}
}
return
}
switch block {
case "":
code = append(code, line)
default:
code = append(code, line)
}
})
text()
}},
}, Hand: func(m *ice.Message, arg ...string) {
if len(arg) == 0 {
m.Echo(`