From 15c9cff947886e273ba4adca44b734c0c533b5cc Mon Sep 17 00:00:00 2001 From: rfyiamcool Date: Sun, 10 Mar 2024 09:07:06 +0800 Subject: [PATCH] feat: add custom tag/expr Signed-off-by: rfyiamcool --- gronx.go | 18 ++++++++++++++++++ gronx_test.go | 23 +++++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/gronx.go b/gronx.go index 9fb5388..f4c9fd2 100644 --- a/gronx.go +++ b/gronx.go @@ -2,6 +2,7 @@ package gronx import ( "errors" + "fmt" "regexp" "strings" "time" @@ -29,6 +30,23 @@ var expressions = map[string]string{ "@everysecond": "* * * * * *", } +func AddTag(tag, expr string) error { + _, ok := expressions[tag] + if ok { + return errors.New("conflict tag") + } + + segs, err := Segments(expr) + if err != nil { + return err + } + expr = strings.Join(segs, " ") + + expressions[tag] = expr + fmt.Println(expr) + return nil +} + // SpaceRe is regex for whitespace. var SpaceRe = regexp.MustCompile(`\s+`) var yearRe = regexp.MustCompile(`\d{4}`) diff --git a/gronx_test.go b/gronx_test.go index 2d00059..b08c177 100644 --- a/gronx_test.go +++ b/gronx_test.go @@ -93,6 +93,29 @@ func TestIsValid(t *testing.T) { } +func TestAddTag(t *testing.T) { + t.Run("add good tag", func(t *testing.T) { + err := AddTag("@2s", "*/2 * * * * *") + if err != nil { + t.Error("expected nil, got err") + } + }) + + t.Run("add conflict tag", func(t *testing.T) { + err := AddTag("@2s", "*/2 * * * * *") + if err == nil { + t.Error("expected err, got nil") + } + }) + + t.Run("add wrong tag", func(t *testing.T) { + err := AddTag("@3s", "* * * *") + if err == nil { + t.Error("expected err, got nil") + } + }) +} + func TestIsDue(t *testing.T) { gron := New()