From 7d76a316b47767a58e2a75e373fb272434099aa3 Mon Sep 17 00:00:00 2001 From: shy Date: Sun, 3 Dec 2023 10:51:48 +0800 Subject: [PATCH] add some --- base/lex/lex.go | 2 - base/lex/split.go | 5 +++ misc/lex/lex.go | 9 ---- misc/lex/regexp.go | 11 ----- misc/lex/split.go | 106 --------------------------------------------- misc/wx/ide.go | 2 +- 6 files changed, 6 insertions(+), 129 deletions(-) delete mode 100644 misc/lex/lex.go delete mode 100644 misc/lex/regexp.go delete mode 100644 misc/lex/split.go diff --git a/base/lex/lex.go b/base/lex/lex.go index aaada429..9a56d49e 100644 --- a/base/lex/lex.go +++ b/base/lex/lex.go @@ -7,5 +7,3 @@ const LEX = "lex" var Index = &ice.Context{Name: LEX, Help: "词法模块"} func init() { ice.Index.Register(Index, nil, SPLIT) } - -// func init() { ice.Index.Register(Index, nil) } diff --git a/base/lex/split.go b/base/lex/split.go index ff6a8318..cb9886b8 100644 --- a/base/lex/split.go +++ b/base/lex/split.go @@ -34,6 +34,7 @@ func _split_list(m *ice.Message, file string, arg ...string) ice.Map { const INDENT = "_indent" stack, indent := []int{}, 0 list, line := kit.List(kit.Data(INDENT, -1)), "" + err := false m.Cmd(nfs.CAT, file, func(text string) { if strings.TrimSpace(text) == "" { return @@ -47,6 +48,9 @@ func _split_list(m *ice.Message, file string, arg ...string) ice.Map { stack, indent = _split_deep(stack, text) data := kit.Data(INDENT, indent) ls := kit.Split(text, m.Option(SPLIT_SPACE), m.Option(SPLIT_BLOCK), m.Option(SPLIT_QUOTE), m.Option(SPLIT_TRANS)) + if err { + return + } switch cb := m.OptionCB(SPLIT).(type) { case func(int, []string): cb(indent, ls) @@ -69,6 +73,7 @@ func _split_list(m *ice.Message, file string, arg ...string) ice.Map { cb(indent, text, ls) case nil: default: + err = true m.ErrorNotImplement(cb) } kit.For(arg, func(k string) { diff --git a/misc/lex/lex.go b/misc/lex/lex.go deleted file mode 100644 index 9a56d49e..00000000 --- a/misc/lex/lex.go +++ /dev/null @@ -1,9 +0,0 @@ -package lex - -import ice "shylinux.com/x/icebergs" - -const LEX = "lex" - -var Index = &ice.Context{Name: LEX, Help: "词法模块"} - -func init() { ice.Index.Register(Index, nil, SPLIT) } diff --git a/misc/lex/regexp.go b/misc/lex/regexp.go deleted file mode 100644 index 8aa7dc63..00000000 --- a/misc/lex/regexp.go +++ /dev/null @@ -1,11 +0,0 @@ -package lex - -const ( - PATTERN = "pattern" - REGEXP = "regexp" - PREFIX = "prefix" - SUFFIX = "suffix" - - SPACE = "space" - OPERATOR = "operator" -) diff --git a/misc/lex/split.go b/misc/lex/split.go deleted file mode 100644 index ef3a24a7..00000000 --- a/misc/lex/split.go +++ /dev/null @@ -1,106 +0,0 @@ -package lex - -import ( - "strings" - - ice "shylinux.com/x/icebergs" - "shylinux.com/x/icebergs/base/mdb" - "shylinux.com/x/icebergs/base/nfs" - kit "shylinux.com/x/toolkits" -) - -func _split_tab(text string) (tab int) { - for _, c := range text { - switch c { - case '\t': - tab += 4 - case ' ': - tab++ - default: - break - } - } - return -} -func _split_deep(stack []int, text string) ([]int, int) { - tab := _split_tab(text) - for i := len(stack) - 1; i >= 0; i-- { - kit.If(tab <= stack[i], func() { stack = stack[:len(stack)-1] }) - } - stack = append(stack, tab) - return stack, len(stack) -} -func _split_list(m *ice.Message, file string, arg ...string) ice.Map { - const INDENT = "_indent" - stack, indent := []int{}, 0 - list, line := kit.List(kit.Data(INDENT, -1)), "" - m.Cmd(nfs.CAT, file, func(text string) { - if strings.TrimSpace(text) == "" { - return - } - if line += text; strings.Count(text, "`")%2 == 1 { - return - } - if strings.HasPrefix(strings.TrimSpace(text), "# ") { - return - } - stack, indent = _split_deep(stack, text) - data := kit.Data(INDENT, indent) - ls := kit.Split(text, m.Option(SPLIT_SPACE), m.Option(SPLIT_BLOCK), m.Option(SPLIT_QUOTE), m.Option(SPLIT_TRANS)) - switch cb := m.OptionCB(SPLIT).(type) { - case func(int, []string): - cb(indent, ls) - case func(int, []string) []string: - ls = cb(indent, ls) - case func(int, []string, ice.Map, ice.Map): - root, _ := kit.Value(list[0], "list.0").(ice.Map) - cb(indent, ls, data, root) - case func(int, []string, ice.Map) []string: - ls = cb(indent, ls, data) - case func([]string, ice.Map) []string: - ls = cb(ls, data) - case func([]string) []string: - ls = cb(ls) - case func([]string): - cb(ls) - case nil: - default: - m.ErrorNotImplement(cb) - } - kit.For(arg, func(k string) { - kit.Value(data, kit.Keym(k), kit.Select("", ls, 0)) - kit.If(len(ls) > 0, func() { ls = ls[1:] }) - }) - kit.For(ls, func(k, v string) { kit.Value(data, kit.Keym(k), v) }) - for i := len(list) - 1; i >= 0; i-- { - if indent > kit.Int(kit.Value(list[i], kit.Keym(INDENT))) { - kit.Value(list[i], kit.Keys(mdb.LIST, "-2"), data) - list = append(list, data) - break - } - list = list[:len(list)-1] - } - line = "" - }) - return list[0].(ice.Map) -} - -const ( - SPLIT_SPACE = "split.space" - SPLIT_BLOCK = "split.block" - SPLIT_QUOTE = "split.quote" - SPLIT_TRANS = "split.trans" -) -const SPLIT = "split" - -func init() { - Index.MergeCommands(ice.Commands{ - SPLIT: {Name: "split path key auto", Help: "分词", Hand: func(m *ice.Message, arg ...string) { - if len(arg) == 0 || strings.HasSuffix(arg[0], nfs.PS) { - m.Cmdy(nfs.DIR, arg) - return - } - m.Echo(kit.Format(_split_list(m, arg[0], kit.Split(kit.Join(arg[1:]))...))) - }}, - }) -} diff --git a/misc/wx/ide.go b/misc/wx/ide.go index abb64ee8..50bd8e65 100644 --- a/misc/wx/ide.go +++ b/misc/wx/ide.go @@ -9,12 +9,12 @@ import ( "shylinux.com/x/icebergs/base/aaa" "shylinux.com/x/icebergs/base/cli" "shylinux.com/x/icebergs/base/ctx" + "shylinux.com/x/icebergs/base/lex" "shylinux.com/x/icebergs/base/log" "shylinux.com/x/icebergs/base/mdb" "shylinux.com/x/icebergs/base/nfs" "shylinux.com/x/icebergs/base/tcp" "shylinux.com/x/icebergs/base/web" - "shylinux.com/x/icebergs/misc/lex" kit "shylinux.com/x/toolkits" )