Compare commits
8 Commits
fc2c1a1348
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 2a1cdecda7 | |||
| 27897a51dc | |||
| 4ff7bd6ba7 | |||
| fb472fcece | |||
| af71724029 | |||
| 565bcca4f0 | |||
| c59d801434 | |||
| dfe4801421 |
@@ -4,7 +4,7 @@ go 1.20
|
|||||||
|
|
||||||
require (
|
require (
|
||||||
b612.me/stardb v1.1.4
|
b612.me/stardb v1.1.4
|
||||||
b612.me/startimer v0.0.1
|
b612.me/startimer v0.0.0-20230529085949-3ec2007a7d4f
|
||||||
github.com/glebarez/go-sqlite v1.21.1
|
github.com/glebarez/go-sqlite v1.21.1
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
b612.me/stardb v1.1.4 h1:Ic+CwGZpDKtgHTkDJ5/1kxgEEGM9Hj5xu9i0n6CbXfs=
|
b612.me/stardb v1.1.4 h1:Ic+CwGZpDKtgHTkDJ5/1kxgEEGM9Hj5xu9i0n6CbXfs=
|
||||||
b612.me/stardb v1.1.4/go.mod h1:qtGEu+joEQxFESl3tse5xqiD767f6sAmHD284+Xoy48=
|
b612.me/stardb v1.1.4/go.mod h1:qtGEu+joEQxFESl3tse5xqiD767f6sAmHD284+Xoy48=
|
||||||
b612.me/startimer v0.0.1 h1:7Q4hzkXZR1iFSWyEoTBjUiDx1HsROIvIel3HdfhIhxo=
|
b612.me/startimer v0.0.0-20230529085949-3ec2007a7d4f h1:J+NFN1iuLNSZAjhZ39VPRX0gdbcHUltZbQc7wkJZs2o=
|
||||||
b612.me/startimer v0.0.1/go.mod h1:7YlIWMVBIxLObVI0Ls+CMCCVZJ+4DdTaqF2TshthZjk=
|
b612.me/startimer v0.0.0-20230529085949-3ec2007a7d4f/go.mod h1:7YlIWMVBIxLObVI0Ls+CMCCVZJ+4DdTaqF2TshthZjk=
|
||||||
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
|
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
|
||||||
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
|
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
|
||||||
github.com/glebarez/go-sqlite v1.21.1 h1:7MZyUPh2XTrHS7xNEHQbrhfMZuPSzhkm2A1qgg0y5NY=
|
github.com/glebarez/go-sqlite v1.21.1 h1:7MZyUPh2XTrHS7xNEHQbrhfMZuPSzhkm2A1qgg0y5NY=
|
||||||
|
|||||||
+7
-3
@@ -5,6 +5,7 @@ import (
|
|||||||
"b612.me/stardb"
|
"b612.me/stardb"
|
||||||
"b612.me/startimer"
|
"b612.me/startimer"
|
||||||
"errors"
|
"errors"
|
||||||
|
"fmt"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
@@ -70,10 +71,13 @@ func innerLoadDB(db *stardb.StarDB, callback func(task Task)) (*Remind, error) {
|
|||||||
for _, task := range res {
|
for _, task := range res {
|
||||||
itask := new(Task)
|
itask := new(Task)
|
||||||
*itask = task
|
*itask = task
|
||||||
tmr := startimer.NewTimer(time.Now())
|
tmr, err := startimer.NewTimer(time.Now())
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error while init:%s error:%v", itask.Origin, err)
|
||||||
|
}
|
||||||
err = tmr.ImportRepeats(itask.TmrInfo)
|
err = tmr.ImportRepeats(itask.TmrInfo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, fmt.Errorf("error while import:%s error:%v", itask.Origin, err)
|
||||||
}
|
}
|
||||||
tmr.SetRunCountLimit(int(itask.Limit))
|
tmr.SetRunCountLimit(int(itask.Limit))
|
||||||
itask.timer = &tmr
|
itask.timer = &tmr
|
||||||
@@ -99,7 +103,7 @@ func (r *Remind) callbackFn(task *Task) {
|
|||||||
r.callback(*task)
|
r.callback(*task)
|
||||||
}
|
}
|
||||||
if !task.GetTimer().IsRunning() {
|
if !task.GetTimer().IsRunning() {
|
||||||
r.DeleteTask(task.ID)
|
go r.DeleteTask(task.ID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,30 @@ func exists(path string) bool {
|
|||||||
}
|
}
|
||||||
return err == nil
|
return err == nil
|
||||||
}
|
}
|
||||||
|
func TestStarDB(t *testing.T) {
|
||||||
|
var db stardb.StarDB
|
||||||
|
err := db.Open("sqlite", "./db.sqlite")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
var r *Remind
|
||||||
|
r, err = NewRemind(&db, func(task Task) {
|
||||||
|
fmt.Println("hello world!", time.Now(), task.ID, task.Key, task.TmrInfo, task.Msg, task.Origin)
|
||||||
|
fmt.Println(task.GetTimer().NextTimer(), task.GetTimer().IsRunning())
|
||||||
|
fmt.Println(r.ListTasks())
|
||||||
|
fmt.Println("ok")
|
||||||
|
time.Sleep(time.Second * 10)
|
||||||
|
fmt.Println(task.GetTimer().NextTimer())
|
||||||
|
})
|
||||||
|
tk, err := r.AddTask("每天下午3点52分20秒提醒我吃饭", "00", []byte{})
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
fmt.Println(tk.GetTimer().NextTimer())
|
||||||
|
fmt.Println(r.ListTasks())
|
||||||
|
fmt.Println("hello")
|
||||||
|
time.Sleep(time.Second * 120)
|
||||||
|
}
|
||||||
|
|
||||||
func TestOtherDb(t *testing.T) {
|
func TestOtherDb(t *testing.T) {
|
||||||
var db stardb.StarDB
|
var db stardb.StarDB
|
||||||
|
|||||||
+57
-30
@@ -9,11 +9,27 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func legalCheck(limitCode string, baseDate time.Time, opts ...startimer.TimerOptions) (startimer.StarTimer, error) {
|
||||||
|
if limitCode == "" {
|
||||||
|
return startimer.NewTimer(baseDate, opts...)
|
||||||
|
}
|
||||||
|
timer, err := startimer.NewTimer(baseDate, opts...)
|
||||||
|
if err != nil {
|
||||||
|
return timer, err
|
||||||
|
}
|
||||||
|
if strings.Contains(limitCode, "今") {
|
||||||
|
if timer.NextTimer().Day() != time.Now().Day() {
|
||||||
|
return timer, errors.New("无法添加,指定的提醒时刻不在未来。")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return timer, err
|
||||||
|
}
|
||||||
|
|
||||||
func matchPeriodPattern01(base time.Time, str string) (startimer.StarTimer, error) {
|
func matchPeriodPattern01(base time.Time, str string) (startimer.StarTimer, error) {
|
||||||
str = transChn(str)
|
str = transChn(str)
|
||||||
var rpt startimer.Repeats
|
var rpt startimer.Repeats
|
||||||
var duration time.Duration
|
var duration time.Duration
|
||||||
reg := regexp.MustCompile(`(每隔|每)?(\d{0,4}年)?(\d{0,5}个?月)?(\d{0,4}[明后大]{0,4}[日号天])?([上中下午夜早凌清晨傍晚里]+)?(\d{1,4}个?[点小时钟:]+)?(\d{0,4}半?[分:秒]?钟?)?(\d{0,10}半?秒?钟?)?(后)?`)
|
reg := regexp.MustCompile(`(每隔|每)?(\d{0,4}年)?(\d{0,5}个?月)?(\d{0,4}[明后大]{0,4}[日号天])?([今天日上中下午夜早凌清晨傍晚里]+)?(\d{1,4}个?[点小时钟::]+)?(\d{0,4}半?[分::秒]?钟?)?(\d{0,10}半?秒?钟?)?(后)?`)
|
||||||
if reg.MatchString(str) {
|
if reg.MatchString(str) {
|
||||||
pts := reg.FindStringSubmatch(str)
|
pts := reg.FindStringSubmatch(str)
|
||||||
setAsDate := false
|
setAsDate := false
|
||||||
@@ -52,11 +68,11 @@ func matchPeriodPattern01(base time.Time, str string) (startimer.StarTimer, erro
|
|||||||
if rpt.Every {
|
if rpt.Every {
|
||||||
setAsDate = true
|
setAsDate = true
|
||||||
}
|
}
|
||||||
case "明天":
|
case "明天", "明日":
|
||||||
rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_DAY, Value: uint32(now.Add(time.Hour * 24).Day())})
|
rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_DAY, Value: uint32(now.Add(time.Hour * 24).Day())})
|
||||||
case "后天":
|
case "后天", "后日":
|
||||||
rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_DAY, Value: uint32(now.Add(time.Hour * 48).Day())})
|
rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_DAY, Value: uint32(now.Add(time.Hour * 48).Day())})
|
||||||
case "大后天":
|
case "大后天", "大后日":
|
||||||
rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_DAY, Value: uint32(now.Add(time.Hour * 72).Day())})
|
rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_DAY, Value: uint32(now.Add(time.Hour * 72).Day())})
|
||||||
case "大大后天":
|
case "大大后天":
|
||||||
rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_DAY, Value: uint32(now.Add(time.Hour * 96).Day())})
|
rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_DAY, Value: uint32(now.Add(time.Hour * 96).Day())})
|
||||||
@@ -79,7 +95,7 @@ func matchPeriodPattern01(base time.Time, str string) (startimer.StarTimer, erro
|
|||||||
var hour uint32
|
var hour uint32
|
||||||
if pts[6] != "" {
|
if pts[6] != "" {
|
||||||
hour = uint32(getNumbers(pts[6]))
|
hour = uint32(getNumbers(pts[6]))
|
||||||
if timeParse == "下午" || strings.Contains(timeParse, "晚") || strings.Contains(timeParse, "夜") {
|
if hour < 12 && (timeParse == "下午" || strings.Contains(timeParse, "晚") || strings.Contains(timeParse, "夜")) {
|
||||||
hour += 12
|
hour += 12
|
||||||
}
|
}
|
||||||
if rpt.Every == setAsDate {
|
if rpt.Every == setAsDate {
|
||||||
@@ -129,7 +145,7 @@ func matchPeriodPattern01(base time.Time, str string) (startimer.StarTimer, erro
|
|||||||
} else {
|
} else {
|
||||||
base.Add(tmodel * time.Duration(uint32(getNumbers(pts[7]))))
|
base.Add(tmodel * time.Duration(uint32(getNumbers(pts[7]))))
|
||||||
}
|
}
|
||||||
} else if hour != 0 {
|
} else if hour != 0 || pts[5] != "" {
|
||||||
if rpt.Every == setAsDate {
|
if rpt.Every == setAsDate {
|
||||||
rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_MINUTE, Value: 0})
|
rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_MINUTE, Value: 0})
|
||||||
}
|
}
|
||||||
@@ -146,7 +162,7 @@ func matchPeriodPattern01(base time.Time, str string) (startimer.StarTimer, erro
|
|||||||
} else {
|
} else {
|
||||||
base.Add(time.Second * time.Duration(uint32(getNumbers(pts[8]))))
|
base.Add(time.Second * time.Duration(uint32(getNumbers(pts[8]))))
|
||||||
}
|
}
|
||||||
} else if hour != 0 || pts[7] != "" {
|
} else if hour != 0 || pts[5] != "" || pts[7] != "" {
|
||||||
if rpt.Every == setAsDate {
|
if rpt.Every == setAsDate {
|
||||||
rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_SECOND, Value: 0})
|
rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_SECOND, Value: 0})
|
||||||
}
|
}
|
||||||
@@ -172,7 +188,7 @@ func matchPeriodPattern01(base time.Time, str string) (startimer.StarTimer, erro
|
|||||||
now = now.Add(time.Duration(sr.Value) * time.Second)
|
now = now.Add(time.Duration(sr.Value) * time.Second)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return startimer.NewTimer(time.Now(), startimer.WithStaticDate(now), startimer.WithRunCountLimit(count)), nil
|
return legalCheck(timeParse, time.Now(), startimer.WithStaticDate(now), startimer.WithRunCountLimit(count))
|
||||||
}
|
}
|
||||||
if duration.Seconds() > 0 {
|
if duration.Seconds() > 0 {
|
||||||
rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_SECOND, Value: uint32(duration.Seconds())})
|
rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_SECOND, Value: uint32(duration.Seconds())})
|
||||||
@@ -180,27 +196,38 @@ func matchPeriodPattern01(base time.Time, str string) (startimer.StarTimer, erro
|
|||||||
if rpt.Every == setAsDate {
|
if rpt.Every == setAsDate {
|
||||||
rpt.Every = false
|
rpt.Every = false
|
||||||
}
|
}
|
||||||
return startimer.NewTimer(base, startimer.WithRepeats(&rpt), startimer.WithRunCountLimit(count)), nil
|
return legalCheck(timeParse, base, startimer.WithRepeats(&rpt), startimer.WithRunCountLimit(count))
|
||||||
}
|
}
|
||||||
return startimer.StarTimer{}, errors.New("no Match")
|
return startimer.StarTimer{}, errors.New("no Match")
|
||||||
}
|
}
|
||||||
|
|
||||||
func matchPeroidPattern02(base time.Time, str string) (startimer.StarTimer, error) {
|
func matchPeroidPattern02(base time.Time, str string) (startimer.StarTimer, error) {
|
||||||
|
preReg := "(周|礼拜|星期)([1-7一二三四五六七日天])([0-9一二三四五六七八九零])"
|
||||||
|
preExp := regexp.MustCompile(preReg)
|
||||||
|
if preExp.MatchString(str) {
|
||||||
|
str = preExp.ReplaceAllString(str, "${1}${2}的${3}")
|
||||||
|
}
|
||||||
str = transChn(str)
|
str = transChn(str)
|
||||||
|
str = strings.ReplaceAll(str, "周日", "周0")
|
||||||
|
str = strings.ReplaceAll(str, "礼拜天", "周0")
|
||||||
|
str = strings.ReplaceAll(str, "星期日", "周0")
|
||||||
|
str = strings.ReplaceAll(str, "星期天", "周0")
|
||||||
|
str = strings.ReplaceAll(str, "周天", "周0")
|
||||||
var rpt startimer.Repeats
|
var rpt startimer.Repeats
|
||||||
reg := regexp.MustCompile(`(每)?([周星期礼拜][周礼拜星期到1-6日天]+)+的?([上中下午夜早凌清晨傍晚里]+)?(\d{1,4}[个点时:]+)?(\d{0,4}[分半:]?钟?)?(\d{1,10}秒?钟?)?`)
|
reg := regexp.MustCompile(`(每)?([周星期礼拜日天]\d{0,1})到?([周礼拜星期日天]?\d{0,1})?的?([上中下午夜早凌清晨傍晚里]+)?(\d{1,4}[个点时::]+)?(\d{0,4}[分半::]?钟?)?(\d{1,10}秒?钟?)?`)
|
||||||
if reg.MatchString(str) {
|
if reg.MatchString(str) {
|
||||||
pts := reg.FindStringSubmatch(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] != "" {
|
if pts[2] != "" {
|
||||||
wk := strings.ReplaceAll(pts[2], "周日", "周0")
|
if len(pts[3]) != 0 {
|
||||||
wk = strings.ReplaceAll(wk, "礼拜天", "周0")
|
startWk := getNumbers(pts[2])
|
||||||
wk = strings.ReplaceAll(wk, "星期日", "周0")
|
endWk := getNumbers(pts[3])
|
||||||
wk = strings.ReplaceAll(wk, "星期天", "周0")
|
|
||||||
wk = strings.ReplaceAll(wk, "周天", "周0")
|
|
||||||
if strings.Contains(wk, "到") {
|
|
||||||
pk := strings.Split(wk, "到")
|
|
||||||
startWk := getNumbers(pk[0])
|
|
||||||
endWk := getNumbers(pk[1])
|
|
||||||
if endWk < startWk {
|
if endWk < startWk {
|
||||||
endWk += 7
|
endWk += 7
|
||||||
}
|
}
|
||||||
@@ -212,15 +239,15 @@ func matchPeroidPattern02(base time.Time, str string) (startimer.StarTimer, erro
|
|||||||
rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_WEEK, Value: uint32(num)})
|
rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_WEEK, Value: uint32(num)})
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
wkNum := getNumbers(wk)
|
wkNum := getNumbers(pts[2])
|
||||||
rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_WEEK, Value: uint32(wkNum)})
|
rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_WEEK, Value: uint32(wkNum)})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
timeParse := pts[3]
|
timeParse := pts[4]
|
||||||
var hour uint32
|
var hour uint32
|
||||||
if pts[4] != "" {
|
if pts[5] != "" {
|
||||||
hour = uint32(getNumbers(pts[4]))
|
hour = uint32(getNumbers(pts[5]))
|
||||||
if timeParse == "下午" || strings.Contains(timeParse, "晚") || strings.Contains(timeParse, "夜") {
|
if timeParse == "下午" || strings.Contains(timeParse, "晚") || strings.Contains(timeParse, "夜") {
|
||||||
hour += 12
|
hour += 12
|
||||||
}
|
}
|
||||||
@@ -244,16 +271,16 @@ func matchPeroidPattern02(base time.Time, str string) (startimer.StarTimer, erro
|
|||||||
}
|
}
|
||||||
rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_HOUR, Value: hour})
|
rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_HOUR, Value: hour})
|
||||||
}
|
}
|
||||||
if pts[5] != "" {
|
if pts[6] != "" {
|
||||||
if pts[5] == "半" {
|
if pts[6] == "半" {
|
||||||
pts[5] = "30"
|
pts[6] = "30"
|
||||||
}
|
}
|
||||||
rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_MINUTE, Value: uint32(getNumbers(pts[5]))})
|
rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_MINUTE, Value: uint32(getNumbers(pts[6]))})
|
||||||
} else if hour != 0 {
|
} else if hour != 0 {
|
||||||
rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_MINUTE, Value: 0})
|
rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_MINUTE, Value: 0})
|
||||||
}
|
}
|
||||||
if pts[6] != "" {
|
if pts[7] != "" {
|
||||||
rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_SECOND, Value: uint32(getNumbers(pts[6]))})
|
rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_SECOND, Value: uint32(getNumbers(pts[7]))})
|
||||||
} else if hour != 0 {
|
} else if hour != 0 {
|
||||||
rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_SECOND, Value: 0})
|
rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_SECOND, Value: 0})
|
||||||
}
|
}
|
||||||
@@ -261,7 +288,7 @@ func matchPeroidPattern02(base time.Time, str string) (startimer.StarTimer, erro
|
|||||||
if pts[1] != "" {
|
if pts[1] != "" {
|
||||||
count = 0
|
count = 0
|
||||||
}
|
}
|
||||||
return startimer.NewTimer(base, startimer.WithRepeats(&rpt), startimer.WithRunCountLimit(count)), nil
|
return startimer.NewTimer(base, startimer.WithRepeats(&rpt), startimer.WithRunCountLimit(count))
|
||||||
}
|
}
|
||||||
return startimer.StarTimer{}, errors.New("no Match")
|
return startimer.StarTimer{}, errors.New("no Match")
|
||||||
}
|
}
|
||||||
|
|||||||
+24
-5
@@ -10,19 +10,38 @@ func TestParse(t *testing.T) {
|
|||||||
for k, code := range []string{"一个小时后告诉我事情", "三个小时后爱我", "每两个小时提醒我吃饭",
|
for k, code := range []string{"一个小时后告诉我事情", "三个小时后爱我", "每两个小时提醒我吃饭",
|
||||||
"每五个月零二十五天三小时25分15秒告诉我时间", "5月23日上午3点24分12秒打我", "周五上午11点提醒我", "5时25分提醒我",
|
"每五个月零二十五天三小时25分15秒告诉我时间", "5月23日上午3点24分12秒打我", "周五上午11点提醒我", "5时25分提醒我",
|
||||||
"每周一到周五上午8点提醒我吃饭", "每天晚上8点提醒我吃饭", "每月16号晚上8点提醒我吃饭", "晚上8:30提醒我",
|
"每周一到周五上午8点提醒我吃饭", "每天晚上8点提醒我吃饭", "每月16号晚上8点提醒我吃饭", "晚上8:30提醒我",
|
||||||
"晚上八点半提醒我", "6分钟后提醒我", "凌晨0点半", "每20秒提醒我", "半小时后提醒我", "半分钟后提醒我", "一分半后提醒我"} {
|
"晚上八点半提醒我", "6分钟后提醒我", "凌晨0点半", "每20秒提醒我", "半小时后提醒我", "半分钟后提醒我", "一分半后提醒我", "00:00提醒我", "凌晨零点提醒我", "今晚九点二十提醒我", "周五九点二十提醒我"} {
|
||||||
a, _ := WhenWithPeriod(code)
|
a, err := WhenWithPeriod(code)
|
||||||
//fmt.Println(a.Repeats()[0])
|
//fmt.Println(a.Repeats()[0])
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
}
|
||||||
fmt.Println(a.NextTimer(), a.RunCountLimit(), code, k)
|
fmt.Println(a.NextTimer(), a.RunCountLimit(), code, k)
|
||||||
fmt.Println(a.NextTimerAfterDate(time.Now().Add(time.Hour * 72)))
|
fmt.Println(a.NextTimerAfterDate(time.Now().Add(time.Hour * 72)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSigParse(t *testing.T) {
|
func TestSigParse(t *testing.T) {
|
||||||
for _, code := range []string{"每20秒提醒我"} {
|
for _, code := range []string{"周五九点二十提醒我"} {
|
||||||
a, _ := WhenWithPeriod(code)
|
a, err := WhenWithPeriod(code)
|
||||||
//fmt.Println(a.Repeats()[0])
|
fmt.Println(err)
|
||||||
fmt.Println(a.NextTimer(), a.RunCountLimit(), code)
|
fmt.Println(a.NextTimer(), a.RunCountLimit(), code)
|
||||||
|
pm := a.NextTimer()
|
||||||
|
fmt.Println(pm)
|
||||||
|
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)))
|
fmt.Println(a.NextTimerAfterDate(time.Now().Add(time.Hour * 72)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user