diff --git a/base/lex/split.go b/base/lex/split.go index 8f1e5e23..bcd833fe 100644 --- a/base/lex/split.go +++ b/base/lex/split.go @@ -8,7 +8,7 @@ import ( kit "shylinux.com/x/toolkits" ) -func _split_deep(m *ice.Message, text string) (deep int) { +func _split_deep(text string) (deep int) { for _, c := range text { switch c { case '\t': @@ -21,9 +21,20 @@ func _split_deep(m *ice.Message, text string) (deep int) { } return } +func _split_deep2(stack []int, text string) ([]int, int) { + deep := _split_deep(text) + for i := len(stack) - 1; i >= 0; i-- { + if deep <= stack[i] { + stack = stack[:len(stack)-1] + } + } + stack = append(stack, deep) + return stack, len(stack) +} func _split_list(m *ice.Message, file string, arg ...string) { const DEEP = "_deep" list := kit.List(kit.Data(DEEP, -1)) + stack, deep := []int{}, 0 m.Cmd(nfs.CAT, file, func(text string) { // if text = kit.Split(text, "#", "#")[0]; strings.TrimSpace(text) == "" { // return @@ -35,7 +46,8 @@ func _split_list(m *ice.Message, file string, arg ...string) { return } - deep := _split_deep(m, text) + // deep := _split_deep(text) + stack, deep = _split_deep2(stack, text) data := kit.Data(DEEP, deep) ls := kit.Split(text) diff --git a/core/chat/website.go b/core/chat/website.go index b16a1159..da089415 100644 --- a/core/chat/website.go +++ b/core/chat/website.go @@ -25,13 +25,13 @@ func _website_parse(m *ice.Message, text string) map[string]interface{} { } } switch deep { - case 0: + case 1: storm = kit.Dict() river[ls[0]] = kit.Dict(kit.MDB_NAME, ls[1], "storm", storm, data) - case 4: + case 2: last = kit.Dict(kit.MDB_NAME, ls[1], kit.MDB_LIST, kit.List(), data) storm[ls[0]] = last - case 8: + case 3: last[kit.MDB_LIST] = append(last[kit.MDB_LIST].([]interface{}), kit.Dict(kit.MDB_NAME, ls[0], kit.MDB_HELP, ls[1], kit.MDB_INDEX, ls[0], data)) } @@ -56,6 +56,7 @@ func init() { switch text := kit.Format(value[kit.MDB_TEXT]); value[kit.MDB_TYPE] { case "txt": res := _website_parse(msg, kit.Format(value[kit.MDB_TEXT])) + // web.RenderResult(msg, kit.Format(res)) web.RenderResult(msg, _website_template2, kit.Format(res)) case "json": web.RenderResult(msg, _website_template2, kit.Format(kit.UnMarshal(text))) @@ -76,7 +77,7 @@ func init() { m.Cmdy(nfs.DIR, arg[1:]).ProcessAgain() } }}, - mdb.CREATE: {Name: "create path type=html,js,json name text", Help: "创建"}, + mdb.CREATE: {Name: "create path type=html,js,json,txt name text", Help: "创建"}, mdb.IMPORT: {Name: "import path=src/", Help: "导入", Hand: func(m *ice.Message, arg ...string) { m.Cmd(nfs.DIR, kit.Dict(nfs.DIR_ROOT, m.Option(nfs.PATH)), func(p string) { switch kit.Ext(p) { diff --git a/misc/git/server.go b/misc/git/server.go index e911fb9a..9282d491 100644 --- a/misc/git/server.go +++ b/misc/git/server.go @@ -124,7 +124,6 @@ func init() { if p := r.URL.Path; strings.HasPrefix(p, "/x/") { r.URL.Path = strings.Replace(r.URL.Path, "/x/", "/code/git/repos/", -1) m.Info("rewrite %v -> %v", p, r.URL.Path) - return true } return false })