From dfe4801421e784af29a71775ad38748d6e864802 Mon Sep 17 00:00:00 2001 From: starainrt Date: Mon, 29 May 2023 14:54:43 +0800 Subject: [PATCH] bug fix --- when/parse.go | 7 +++++++ when/parse_test.go | 14 ++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/when/parse.go b/when/parse.go index 418accb..1a57ba1 100644 --- a/when/parse.go +++ b/when/parse.go @@ -191,6 +191,13 @@ func matchPeroidPattern02(base time.Time, str string) (startimer.StarTimer, erro reg := regexp.MustCompile(`(每)?([周星期礼拜][周礼拜星期到1-6日天]+)+的?([上中下午夜早凌清晨傍晚里]+)?(\d{1,4}[个点时:]+)?(\d{0,4}[分半:]?钟?)?(\d{1,10}秒?钟?)?`) if reg.MatchString(str) { pts := reg.FindStringSubmatch(str) + scs := len(strings.Split(pts[0], "周")) + if scs > 3 { + return startimer.StarTimer{}, errors.New("Invalid stings") + } + if scs == 3 && !strings.Contains(pts[0], "到") { + return startimer.StarTimer{}, errors.New("Invalid stings") + } if pts[2] != "" { wk := strings.ReplaceAll(pts[2], "周日", "周0") wk = strings.ReplaceAll(wk, "礼拜天", "周0") diff --git a/when/parse_test.go b/when/parse_test.go index 57478b5..2bf3f82 100644 --- a/when/parse_test.go +++ b/when/parse_test.go @@ -26,3 +26,17 @@ func TestSigParse(t *testing.T) { fmt.Println(a.NextTimerAfterDate(time.Now().Add(time.Hour * 72))) } } + +func TestInvalid(t *testing.T) { + for k, code := range []string{"每周一周二周四中午11点30分提醒我带夹子和雨伞"} { + a, err := WhenWithPeriod(code) + if err != nil { + fmt.Println(err) + return + } + //fmt.Println(a.Repeats()[0]) + fmt.Println(a.ExportRepeats()) + fmt.Println(a.NextTimer(), a.RunCountLimit(), code, k) + fmt.Println(a.NextTimerAfterDate(time.Now().Add(time.Hour * 72))) + } +}