From a2a47293a87c899840014d0a50459388c8dd541f Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Fri, 7 Jul 2023 12:59:35 +0200 Subject: [PATCH] store pattern as a slice of strings --- config/config.go | 21 +++++++++++++++++---- lib/action/action.go | 6 ++++-- lib/lib.go | 7 ++++++- lib/message/message.go | 2 +- tests/unit_test.go | 2 +- 5 files changed, 29 insertions(+), 9 deletions(-) diff --git a/config/config.go b/config/config.go index acf0194..eb6c9f8 100644 --- a/config/config.go +++ b/config/config.go @@ -106,11 +106,11 @@ var DefaultDoneHandler lib.StepProc // action configuration type action struct { - pattern string + pattern lib.Pattern specs []lib.ActionSpec } -func (act *action) Pattern() string { +func (act *action) Pattern() lib.Pattern { return act.pattern } @@ -118,8 +118,21 @@ func (act *action) Specs() []lib.ActionSpec { return act.specs } -func ActionConfig(pattern string, specs []lib.ActionSpec) *action { - return &action{pattern, specs} +func ActionConfig(pat string, specs []lib.ActionSpec) *action { + return &action{ + pattern: pattern(strings.Split(pat, "|")), + specs: specs, + } +} + +type pattern []string + +func (p pattern) String() string { + return strings.Join(p, "|") +} + +func (p pattern) Slice() []string { + return []string(p) } // overridable settings diff --git a/lib/action/action.go b/lib/action/action.go index 682a764..776e65c 100644 --- a/lib/action/action.go +++ b/lib/action/action.go @@ -33,7 +33,9 @@ func Select(ctx lib.Context, msg lib.Message) []lib.Action { if match(ac, msg) { for _, spec := range ac.Specs() { act := action{ctx, spec, msg} - logging.DebugA(&act).Str("pattern", ac.Pattern()).Msg("action.Select") + logging.DebugA(&act). + Str("pattern", ac.Pattern().String()). + Msg("action.Select") acts = append(acts, &act) } } @@ -42,7 +44,7 @@ func Select(ctx lib.Context, msg lib.Message) []lib.Action { } func match(ac lib.ActionConfig, msg lib.Message) bool { - return ac.Pattern() == msg.Action() + return ac.Pattern().Slice()[0] == msg.Action() //return false } diff --git a/lib/lib.go b/lib/lib.go index 54891f6..0249aa3 100644 --- a/lib/lib.go +++ b/lib/lib.go @@ -15,8 +15,13 @@ type ActionSpec interface { Receivers() []string } +type Pattern interface { + fmt.Stringer + Slice() []string +} + type ActionConfig interface { - Pattern() string + Pattern() Pattern Specs() []ActionSpec } diff --git a/lib/message/message.go b/lib/message/message.go index b352c22..7b80f94 100644 --- a/lib/message/message.go +++ b/lib/message/message.go @@ -81,7 +81,7 @@ func New(args ...string) lib.Message { } func SimpleMessage(action string) lib.Message { - return New("standard", action) + return New("scopes", action) } var Quit = SimpleMessage("quit") diff --git a/tests/unit_test.go b/tests/unit_test.go index 870bbe5..3629d16 100644 --- a/tests/unit_test.go +++ b/tests/unit_test.go @@ -45,7 +45,7 @@ func MessageTest(t *testing.T) { var msg lib.Message = message.SimpleMessage("doit") t.AssertEqual(msg.Action(), "doit") t.AssertEqual(msg.Head().Action(), "doit") - t.AssertEqual(fmt.Sprint(msg), "standard/doit//") + t.AssertEqual(fmt.Sprint(msg), "scopes/doit//") msg = message.New("taskman", "doit", "task", "tsk001") t.AssertEqual(fmt.Sprint(msg), "taskman/doit/task/tsk001") }