diff --git a/core/chat/meet.go b/core/chat/meet.go index 5d159e87..95fe842c 100644 --- a/core/chat/meet.go +++ b/core/chat/meet.go @@ -17,6 +17,27 @@ func init() { mdb.SHORT, mdb.NAME, mdb.FIELD, "time,name,照片,性别,年龄,身高,体重,籍贯,户口,学历,学校,职业,公司,年薪,资产,家境", )}, }, Commands: map[string]*ice.Command{ + "monkey": {Name: "monkey total=888 count=9 run", Help: "猴子开箱子", Meta: kit.Dict("_trans", kit.Dict("name", "姓名")), Action: ice.MergeAction(map[string]*ice.Action{ + mdb.CREATE: {Name: "create name 照片 性别 年龄 身高 体重 籍贯 户口 学历 学校 职业 公司 年薪 资产 家境", Help: "添加"}, + }, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { + total := kit.Int(arg[0]) + count := kit.Int(arg[1]) + for i := 1; i <= total; i++ { + list := []int{} + for j := 1; j <= i/2; j++ { + if i%j == 0 { + list = append(list, j) + } + } + list = append(list, i) + if len(list) == count { + m.Push("index", i) + m.Push("count", len(list)) + m.Push("value", kit.Format(list)) + } + } + m.StatusTimeCount() + }}, MISS: {Name: "miss name auto create", Help: "资料", Meta: kit.Dict("_trans", kit.Dict("name", "姓名")), Action: ice.MergeAction(map[string]*ice.Action{ mdb.CREATE: {Name: "create name 照片 性别 年龄 身高 体重 籍贯 户口 学历 学校 职业 公司 年薪 资产 家境", Help: "添加"}, }, mdb.HashAction()), Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { diff --git a/core/code/go.go b/core/code/go.go index c3a31881..f54e07c5 100644 --- a/core/code/go.go +++ b/core/code/go.go @@ -91,6 +91,8 @@ func init() { m.Cmd(mdb.RENDER, mdb.CREATE, k, m.Prefix(k)) } LoadPlug(m, GO) + LoadPlug(m, MOD) + LoadPlug(m, PROTO) }}, GODOC: {Name: GODOC, Help: "文档", Action: ice.MergeAction(map[string]*ice.Action{ mdb.RENDER: {Hand: func(m *ice.Message, arg ...string) { @@ -137,7 +139,7 @@ func init() { PREFIX, kit.Dict("//", COMMENT), PREPARE, kit.Dict( KEYWORD, kit.Simple( - "module", "require", "replace", "=>", + "go", "module", "require", "replace", "=>", ), ), KEYWORD, kit.Dict(), ))}, @@ -149,13 +151,14 @@ func init() { "package", "import", "type", "struct", "interface", "const", "var", "func", "if", "else", "for", "range", "break", "continue", "switch", "case", "default", "fallthrough", - "go", "select", "defer", "return", + "go", "select", "defer", "return", "panic", "recover", ), DATATYPE, kit.Simple( "int", "int32", "int64", "float64", "string", "byte", "bool", "error", "chan", "map", ), FUNCTION, kit.Simple( + "init", "main", "print", "new", "make", "len", "cap", "copy", "append", "delete", "msg", "m", ), CONSTANT, kit.Simple( diff --git a/core/code/inner.go b/core/code/inner.go index 63cbbf97..a608b2f2 100644 --- a/core/code/inner.go +++ b/core/code/inner.go @@ -17,6 +17,7 @@ func _inner_exec(m *ice.Message, ext, file, dir string, arg ...string) { if !m.Right(dir, file) { return // 没有权限 } + defer m.StatusTime() if m.Cmdy(mdb.ENGINE, ext, file, dir, arg); m.Result() != "" { return // 执行成功 } @@ -47,7 +48,10 @@ func LoadPlug(m *ice.Message, language string) { func PlugAction(fields ...string) map[string]*ice.Action { return ice.SelectAction(map[string]*ice.Action{ - mdb.PLUGIN: {Hand: func(m *ice.Message, arg ...string) { m.Echo(m.Config(PLUG)) }}, + mdb.PLUGIN: {Hand: func(m *ice.Message, arg ...string) { + m.Debug("what %v", m.Config(PLUG)) + m.Echo(m.Config(PLUG)) + }}, mdb.RENDER: {Hand: func(m *ice.Message, arg ...string) { m.Cmdy(nfs.CAT, path.Join(arg[2], arg[1])) }}, }, fields...) } @@ -72,9 +76,7 @@ const INNER = "inner" func init() { Index.Merge(&ice.Context{Commands: map[string]*ice.Command{ - INNER: {Name: "inner path=src/@key file=main.go line=1 auto", Help: "源代码", Meta: kit.Dict( - ice.DisplayLocal(""), - ), Action: ice.MergeAction(map[string]*ice.Action{ + INNER: {Name: "inner path=src/@key file=main.go line=1 auto", Help: "源代码", Meta: kit.Dict(ice.DisplayLocal("")), Action: ice.MergeAction(map[string]*ice.Action{ mdb.PLUGIN: {Name: "plugin", Help: "插件", Hand: func(m *ice.Message, arg ...string) { if m.Cmdy(mdb.PLUGIN, arg); m.Result() == "" { m.Echo(kit.Select("{}", m.Config(kit.Keys(PLUG, arg[0])))) @@ -82,18 +84,17 @@ func init() { m.Set(ice.MSG_STATUS) }}, mdb.SEARCH: {Name: "search", Help: "搜索", Hand: func(m *ice.Message, arg ...string) { - m.Option(cli.CMD_DIR, kit.Path(arg[2])) m.Option(nfs.DIR_ROOT, arg[2]) + m.Option(cli.CMD_DIR, kit.Path(arg[2])) m.Cmdy(mdb.SEARCH, arg[0], arg[1], arg[2]) m.Cmd(FAVOR, arg[1], ice.OptionFields("")).Table(func(index int, value map[string]string, head []string) { - p := path.Join(value[nfs.PATH], value[nfs.FILE]) - if strings.HasPrefix(p, m.Option(nfs.PATH)) { + if p := path.Join(value[nfs.PATH], value[nfs.FILE]); strings.HasPrefix(p, m.Option(nfs.PATH)) { m.Push(nfs.FILE, strings.TrimPrefix(p, m.Option(nfs.PATH))) m.Push(nfs.LINE, value[nfs.LINE]) m.Push(mdb.TEXT, value[mdb.TEXT]) } }) - if m.StatusTimeCount("index", 0); m.Length() == 0 { + if m.StatusTimeCount(mdb.INDEX, 0); m.Length() == 0 { m.Cmdy(INNER, nfs.GREP, arg[1]) } }}, @@ -104,7 +105,7 @@ func init() { }}, nfs.GREP: {Name: "grep", Help: "搜索", Hand: func(m *ice.Message, arg ...string) { m.Cmdy(nfs.GREP, m.Option(nfs.PATH), arg[0]) - m.StatusTimeCount("index", 0) + m.StatusTimeCount(mdb.INDEX, 0) }}, cli.MAKE: {Name: "make", Help: "构建", Hand: func(m *ice.Message, arg ...string) { msg := m.Cmd(cli.SYSTEM, cli.MAKE, arg) @@ -129,12 +130,10 @@ func init() { case nfs.PATH: m.Cmdy(nfs.DIR, arg[1:], "path,size,time").ProcessAgain() case nfs.FILE: - m.Option(nfs.DIR_ROOT, m.Option(nfs.PATH)) - m.Cmdy(nfs.DIR, ice.PWD, "path,size,time").ProcessAgain() + m.Cmdy(nfs.DIR, ice.PWD, "path,size,time", kit.Dict(nfs.DIR_ROOT, m.Option(nfs.PATH))).ProcessAgain() case "url": - m.Option(nfs.DIR_DEEP, ice.TRUE) m.Option(nfs.DIR_ROOT, "usr/volcanos/plugin/local/code/") - m.Cmdy(nfs.DIR, ice.PWD, "path,size,time").ProcessAgain() + m.Cmdy(nfs.DIR, ice.PWD, "path,size,time", kit.Dict(nfs.DIR_DEEP, ice.TRUE)).ProcessAgain() default: m.Cmdy(FAVOR, mdb.INPUTS, arg) } @@ -149,12 +148,15 @@ func init() { } if len(arg) < 2 { nfs.Dir(m, nfs.PATH) - m.Set(ice.MSG_STATUS) return } m.Option("exts", "inner/search.js?a=1,inner/favor.js") arg[1] = kit.Split(arg[1])[0] _inner_list(m, kit.Ext(arg[1]), arg[1], arg[0]) + if m.IsErrNotFound() { + m.SetResult() + m.Echo("") + } m.Set(ice.MSG_STATUS) }}, }, Configs: map[string]*ice.Config{ diff --git a/core/code/vimer.go b/core/code/vimer.go index 16d8a9fb..d0c246e3 100644 --- a/core/code/vimer.go +++ b/core/code/vimer.go @@ -14,9 +14,7 @@ const VIMER = "vimer" func init() { Index.Merge(&ice.Context{Commands: map[string]*ice.Command{ - VIMER: {Name: "vimer path=src/ file=main.go line=1 refresh:button=auto save", Help: "编辑器", Meta: kit.Dict( - ice.DisplayLocal("", INNER), - ), Action: map[string]*ice.Action{ + VIMER: {Name: "vimer path=src/ file=main.go line=1 auto", Help: "编辑器", Meta: kit.Dict(ice.DisplayLocal("", INNER)), Action: map[string]*ice.Action{ nfs.SAVE: {Name: "save type file path", Help: "保存", Hand: func(m *ice.Message, arg ...string) { m.Cmdy(nfs.SAVE, path.Join(m.Option(nfs.PATH), m.Option(nfs.FILE))) }},