diff --git a/core/chat/chat.go b/core/chat/chat.go index ed65319b..08bc23db 100644 --- a/core/chat/chat.go +++ b/core/chat/chat.go @@ -27,10 +27,11 @@ var Index = &ice.Context{Name: "chat", Help: "聊天中心", []interface{}{"storm", "wiki", "wiki"}, []interface{}{"field", "draw", "web.wiki"}, - []interface{}{"field", "word", "web.wiki"}, []interface{}{"field", "data", "web.wiki"}, - []interface{}{"field", "feel", "web.wiki"}, + []interface{}{"field", "word", "web.wiki"}, + []interface{}{"field", "mind", "web.wiki"}, []interface{}{"field", "walk", "web.wiki"}, + []interface{}{"field", "feel", "web.wiki"}, []interface{}{"storm", "code", "code"}, []interface{}{"field", "buffer", "web.code.tmux"}, diff --git a/core/wiki/wiki.go b/core/wiki/wiki.go index 80de353d..055ee30e 100644 --- a/core/wiki/wiki.go +++ b/core/wiki/wiki.go @@ -9,6 +9,7 @@ import ( "fmt" "io/ioutil" + "math/rand" "os" "path" "strings" @@ -26,6 +27,7 @@ func reply(m *ice.Message, cmd string, arg ...string) bool { m.Option("dir_reg", "") m.Option("dir_type", "dir") m.Cmdy("nfs.dir", kit.Select("./", arg, 0)) + m.Option("_display", "table") return true } return false @@ -59,6 +61,8 @@ var Index = &ice.Context{Name: "wiki", Help: "文档中心", "stack": {Name: "stack", Help: "结构", Value: kit.Data("template", stack)}, "chart": {Name: "chart", Help: "绘图", Value: kit.Data("template", prefix, "suffix", ``)}, + "draw": {Name: "draw", Help: "思维导图", Value: kit.Data(kit.MDB_SHORT, "name", "path", "usr/local", "regs", ".*\\.svg", "prefix", ``, "suffix", ``)}, + "data": {Name: "data", Help: "数据表格", Value: kit.Data(kit.MDB_SHORT, "name", "path", "usr/local", "regs", ".*\\.csv")}, "word": {Name: "word", Help: "语言文字", Value: kit.Data(kit.MDB_SHORT, "name", "path", "usr/local", "regs", ".*\\.shy", "alias", map[string]interface{}{ "label": []interface{}{"chart", "label"}, @@ -70,10 +74,8 @@ var Index = &ice.Context{Name: "wiki", Help: "文档中心", "premenu": []interface{}{"title", "premenu"}, }, )}, - "data": {Name: "data", Help: "数据表格", Value: kit.Data(kit.MDB_SHORT, "name", "path", "usr/local", "regs", ".*\\.csv")}, - "draw": {Name: "draw", Help: "思维导图", Value: kit.Data(kit.MDB_SHORT, "name", "path", "usr/local", "regs", ".*\\.svg", "prefix", ``, "suffix", ``)}, - "feel": {Name: "feel", Help: "影音媒体", Value: kit.Data(kit.MDB_SHORT, "name", "path", "usr/local", "regs", ".*\\.(png|JPG|MOV|m4v)")}, "walk": {Name: "walk", Help: "走遍世界", Value: kit.Data(kit.MDB_SHORT, "name", "path", "usr/local", "regs", ".*\\.csv")}, + "feel": {Name: "feel", Help: "影音媒体", Value: kit.Data(kit.MDB_SHORT, "name", "path", "usr/local", "regs", ".*\\.(png|JPG|MOV|m4v)")}, }, Commands: map[string]*ice.Command{ ice.ICE_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { @@ -240,25 +242,22 @@ var Index = &ice.Context{Name: "wiki", Help: "文档中心", m.Option(kit.MDB_NAME, arg[0]) m.Option(kit.MDB_TEXT, arg[1]) - if meta := m.Confv("field", kit.Keys("meta.some", kit.Select("simple", arg, 2))); meta != nil { - m.Option("meta", meta) - } else { - list := []string{} - for _, line := range kit.Split(strings.Join(arg[2:], " "), "\n") { - ls := kit.Split(line) - for i := 0; i < len(ls); i++ { - if strings.HasPrefix(ls[i], "#") { - ls = ls[:i] - break - } - } - list = append(list, ls...) - } + data := kit.Dict() + cmds := kit.Split(arg[1]) + m.Search(cmds[0], func(p *ice.Context, s *ice.Context, key string, cmd *ice.Command) { + data["feature"], data["inputs"] = cmd.Meta, cmd.List + }) - meta := kit.Parse(nil, "", list...) - m.Option("meta", meta) + for i := 2; i < len(arg)-1; i += 2 { + if data := m.Confv("field", kit.Keys("meta.some", arg[i+1], arg[i])); data != nil { + m.Option(arg[i], data) + } else { + m.Parse("option", arg[i], arg[i+1]) + } + data[arg[i]] = m.Optionv(arg[i]) } + m.Option("meta", data) m.Render(m.Conf(cmd, "meta.template")) }}, "order": {Name: "order name text", Help: "列表", Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { @@ -357,6 +356,51 @@ var Index = &ice.Context{Name: "wiki", Help: "文档中心", m.Render(m.Conf("chart", "meta.suffix")) }}, + "draw": {Name: "draw", Help: "思维导图", Meta: kit.Dict("display", "wiki/draw"), List: kit.List( + kit.MDB_INPUT, "text", "name", "path", "action", "auto", + kit.MDB_INPUT, "button", "name", "查看", "action", "auto", + kit.MDB_INPUT, "button", "name", "返回", "cb", "Last", + ), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { + if len(arg) > 0 && arg[0] == "action" { + switch arg[1] { + case "执行": + list := []string{"red", "green", "yellow", "cyan", "blue", "white", "black"} + switch kit.Select("", arg, 2) { + case "color": + m.Push("fill", list[rand.Intn(len(list))]) + m.Push("fill", list[rand.Intn(len(list))]) + default: + x := kit.Int(m.Option("x"))%300 + 10 + m.Push("x", x) + } + case "保存": + m.Cmd("nfs.save", path.Join(m.Conf(cmd, "meta.path"), kit.Select(arg[2], "hi.svg")), arg[3:]) + } + return + } + + reply(m, cmd, arg...) + }}, + "data": {Name: "data", Help: "数据表格", Meta: kit.Dict("display", "wiki/data"), List: kit.List( + kit.MDB_INPUT, "text", "name", "path", + kit.MDB_INPUT, "button", "name", "执行", "action", "auto", + kit.MDB_INPUT, "button", "name", "返回", "cb", "Last", + ), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { + if len(arg) > 0 && arg[0] == "action" { + switch arg[1] { + case "保存": + m.Cmd("nfs.save", path.Join(m.Conf(cmd, "meta.path"), arg[2]), arg[3]) + } + return + } + + if reply(m, cmd, arg...) { + // 目录列表 + return + } + // 解析数据 + m.CSV(m.Result()) + }}, "word": {Name: "word", Help: "语言文字", Meta: kit.Dict("remote", "pod", "display", "wiki/word"), List: kit.List( kit.MDB_INPUT, "text", "name", "path", "value", "自然/编程/hi.shy", kit.MDB_INPUT, "button", "name", "执行", "action", "auto", @@ -365,9 +409,9 @@ var Index = &ice.Context{Name: "wiki", Help: "文档中心", if len(arg) > 0 && arg[0] == "action" { switch arg[1] { case "story": - cmds := kit.Split(strings.Join(arg[4:], " ")) - if m.Right(cmds) { - m.Cmdy(cmds) + cmds := kit.Split(arg[4]) + if m.Right(cmds, arg[5:]) { + m.Cmdy(cmds, arg[5:]) } return case "追加": @@ -414,42 +458,6 @@ var Index = &ice.Context{Name: "wiki", Help: "文档中心", m.Optionv(ice.MSG_ALIAS, m.Confv("word", "meta.alias")) m.Set("result").Cmdy("ssh.scan", arg[0], arg[0], path.Join(m.Conf(cmd, "meta.path"), arg[0])) }}, - // "data": {Name: "data", Help: "数据表格", Meta: kit.Dict("display", "wiki/data"), List: kit.List( - "data": {Name: "data", Help: "数据表格", Meta: kit.Dict("display", "story/trend"), List: kit.List( - kit.MDB_INPUT, "text", "name", "path", - kit.MDB_INPUT, "button", "name", "执行", "action", "auto", - kit.MDB_INPUT, "button", "name", "返回", "cb", "Last", - ), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - if len(arg) > 0 && arg[0] == "action" { - switch arg[1] { - case "保存": - m.Cmd("nfs.save", path.Join(m.Conf(cmd, "meta.path"), arg[2]), arg[3]) - } - return - } - - if reply(m, cmd, arg...) { - // 目录列表 - return - } - // 解析数据 - m.CSV(m.Result()) - }}, - "draw": {Name: "draw", Help: "思维导图", Meta: kit.Dict("display", "wiki/draw"), List: kit.List( - kit.MDB_INPUT, "text", "name", "path", - kit.MDB_INPUT, "button", "name", "执行", "action", "auto", - kit.MDB_INPUT, "button", "name", "返回", "cb", "Last", - ), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - if len(arg) > 0 && arg[0] == "action" { - switch arg[1] { - case "保存": - m.Cmd("nfs.save", path.Join(m.Conf(cmd, "meta.path"), arg[2]), arg[3:]) - } - return - } - - reply(m, cmd, arg...) - }}, "feel": {Name: "feel", Help: "影音媒体", Meta: kit.Dict("display", "wiki/feel", "detail", []string{"标签", "删除"}), List: kit.List( kit.MDB_INPUT, "text", "name", "name", kit.MDB_INPUT, "button", "name", "执行", @@ -566,19 +574,6 @@ var Index = &ice.Context{Name: "wiki", Help: "文档中心", m.Option("scan_mode", "scan") m.Cmdy("ssh.scan", "some", "some", path.Join(m.Conf("word", "meta.path"), arg[0])) }}, - - "qrcode": {Name: "qrcode", Help: "扫码", Meta: kit.Dict("display", "wiki/image"), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - data := map[string]interface{}{} - for i := 0; i < len(arg)-1; i += 2 { - kit.Value(data, arg[i], arg[i+1]) - } - m.Push("_output", "qrcode") - m.Echo(kit.Format(data)) - }}, - "qrcode2": {Name: "qrcode2", Help: "扫码", Meta: kit.Dict("display", "wiki/image"), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - m.Push("_output", "qrcode") - m.Echo(kit.MergeURL(arg[0], arg[1:])) - }}, }, } diff --git a/misc/mp/mp.go b/misc/mp/mp.go index 00770396..725ce12e 100644 --- a/misc/mp/mp.go +++ b/misc/mp/mp.go @@ -62,7 +62,7 @@ var Index = &ice.Context{Name: "mp", Help: "小程序", m.Echo("401").Push("_output", "status") break } - switch m.Option("type") { + switch kit.Select("active", m.Option("type")) { case "active": // 授权登录 m.Cmd(ice.WEB_SPACE, "auth", m.Option("auth"), m.Option(ice.MSG_USERNAME), m.Option(ice.MSG_USERROLE)) diff --git a/type.go b/type.go index 459cae71..f30e3cfb 100644 --- a/type.go +++ b/type.go @@ -371,6 +371,8 @@ func (m *Message) Set(key string, arg ...string) *Message { delete(m.meta, key) return m } + default: + delete(m.meta, key) } return m.Add(key, arg...) } @@ -620,6 +622,27 @@ func (m *Message) Render(str string, arg ...interface{}) *Message { func (m *Message) Qrcode(str string, arg ...interface{}) *Message { return m } +func (m *Message) Parse(meta string, key string, arg ...string) *Message { + list := []string{} + for _, line := range kit.Split(strings.Join(arg, " "), "\n") { + ls := kit.Split(line) + for i := 0; i < len(ls); i++ { + if strings.HasPrefix(ls[i], "#") { + ls = ls[:i] + break + } + } + list = append(list, ls...) + } + + switch data := kit.Parse(nil, "", list...); meta { + case MSG_OPTION: + m.Option(key, data) + case MSG_APPEND: + m.Append(key, data) + } + return m +} func (m *Message) Split(str string, field string, space string, enter string) *Message { indexs := []int{} fields := kit.Split(field, space)