update new func
This commit is contained in:
		
							parent
							
								
									ce84ad4f01
								
							
						
					
					
						commit
						d9af4978c6
					
				
							
								
								
									
										8
									
								
								go.mod
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								go.mod
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					module b612.me/sdk/candy
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					go 1.20
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require (
 | 
				
			||||||
 | 
						b612.me/stardb v1.1.2
 | 
				
			||||||
 | 
						b612.me/startimer v0.0.0-20230501080256-b0fd8947f0dc
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
							
								
								
									
										4
									
								
								go.sum
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								go.sum
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					b612.me/stardb v1.1.2 h1:xr5Ovqd5kVSnV1W7eGJJwy+CyuqSwMmsFnPq/YxIWqg=
 | 
				
			||||||
 | 
					b612.me/stardb v1.1.2/go.mod h1:qtGEu+joEQxFESl3tse5xqiD767f6sAmHD284+Xoy48=
 | 
				
			||||||
 | 
					b612.me/startimer v0.0.0-20230501080256-b0fd8947f0dc h1:WO8jZiLVssi3myTWX5Oo/+/i9vk+Alo4ymJhHi4TXp0=
 | 
				
			||||||
 | 
					b612.me/startimer v0.0.0-20230501080256-b0fd8947f0dc/go.mod h1:8fw+OU7SnxzuLkNCYSbRKmvs4WtHs6SbCHuTf5F6s+U=
 | 
				
			||||||
@ -1,15 +0,0 @@
 | 
				
			|||||||
package remind
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	"fmt"
 | 
					 | 
				
			||||||
	"testing"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func TestParse(t *testing.T) {
 | 
					 | 
				
			||||||
	a, _ := matchPattern01("每两个小时")
 | 
					 | 
				
			||||||
	fmt.Println(a.NextTimer(), a.BaseDate())
 | 
					 | 
				
			||||||
	a, _ = matchPattern01("每五个月零二十五天三小时25分15秒")
 | 
					 | 
				
			||||||
	fmt.Println(a.NextTimer(), a.BaseDate())
 | 
					 | 
				
			||||||
	a, _ = matchPattern01("5月23日3点24分12秒")
 | 
					 | 
				
			||||||
	fmt.Println(a.NextTimer(), a.BaseDate())
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										29
									
								
								remind/remind.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								remind/remind.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					package remind
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"b612.me/stardb"
 | 
				
			||||||
 | 
						"b612.me/startimer"
 | 
				
			||||||
 | 
						"sync"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type Remind struct {
 | 
				
			||||||
 | 
						db       stardb.StarDB
 | 
				
			||||||
 | 
						tasks    map[string]RemindTask
 | 
				
			||||||
 | 
						mu       sync.Mutex
 | 
				
			||||||
 | 
						callBack func(remind RemindTask)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type RemindTask struct {
 | 
				
			||||||
 | 
						ID     int    `db:"id"`
 | 
				
			||||||
 | 
						Origin string `db:"text"`
 | 
				
			||||||
 | 
						timer  startimer.StarTimer
 | 
				
			||||||
 | 
						Key    string `db:"key"`
 | 
				
			||||||
 | 
						Msg    []byte `db:"msg"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func getCreateSql() []string {
 | 
				
			||||||
 | 
						return []string{
 | 
				
			||||||
 | 
							"CREATE TABLE IF NOT EXISTS remind(id INTEGER PRIMARY KEY AUTOINCREMENT,key VARCHAR(64),text TEXT,msg BLOB)",
 | 
				
			||||||
 | 
							"CREATE INDEX IF NOT EXISTS key_idx ON remind (key)",
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -1,24 +1,26 @@
 | 
				
			|||||||
package remind
 | 
					package when
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"b612.me/startimer"
 | 
						"b612.me/startimer"
 | 
				
			||||||
 | 
						"errors"
 | 
				
			||||||
	"regexp"
 | 
						"regexp"
 | 
				
			||||||
	"strconv"
 | 
						"strconv"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func matchPattern01(str string) (startimer.StarTimer, bool) {
 | 
					func matchPeriodPattern01(base time.Time, str string) (startimer.StarTimer, error) {
 | 
				
			||||||
	str = transChn(str)
 | 
						str = transChn(str)
 | 
				
			||||||
	var base = time.Now()
 | 
					 | 
				
			||||||
	var rpt startimer.Repeats
 | 
						var rpt startimer.Repeats
 | 
				
			||||||
	var duration time.Duration
 | 
						var duration time.Duration
 | 
				
			||||||
	reg := regexp.MustCompile(`(每隔|每)?(\d{1,4}年)?(\d{1,5}个?月)?(\d{1,4}[明后大]{0,4}[日号天])?([上中下午夜早凌清晨傍晚里]+)?(\d{1,4}个?[点小时:]+)?(\d{1,4}[分:])?(\d{1,10}秒?)?`)
 | 
						reg := regexp.MustCompile(`(每隔|每)?(\d{1,4}年)?(\d{1,5}个?月)?(\d{1,4}[明后大]{0,4}[日号天])?([上中下午夜早凌清晨傍晚里]+)?(\d{1,4}个?[点小时钟:]+)?(\d{1,4}[分:])?(\d{1,10}秒?)?(后)?`)
 | 
				
			||||||
	if reg.MatchString(str) {
 | 
						if reg.MatchString(str) {
 | 
				
			||||||
		pts := reg.FindStringSubmatch(str)
 | 
							pts := reg.FindStringSubmatch(str)
 | 
				
			||||||
		var timeParse = pts[5]
 | 
							var timeParse = pts[5]
 | 
				
			||||||
 | 
							count := 1
 | 
				
			||||||
		if pts[1] != "" {
 | 
							if pts[1] != "" {
 | 
				
			||||||
			rpt.Every = true
 | 
								rpt.Every = true
 | 
				
			||||||
 | 
								count = 0
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if pts[2] != "" {
 | 
							if pts[2] != "" {
 | 
				
			||||||
			if !rpt.Every {
 | 
								if !rpt.Every {
 | 
				
			||||||
@ -47,7 +49,7 @@ func matchPattern01(str string) (startimer.StarTimer, bool) {
 | 
				
			|||||||
				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())})
 | 
				
			||||||
			default:
 | 
								default:
 | 
				
			||||||
				if !rpt.Every {
 | 
									if !rpt.Every {
 | 
				
			||||||
					rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_MONTH, Value: uint32(getNumbers(pts[4]))})
 | 
										rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_DAY, Value: uint32(getNumbers(pts[4]))})
 | 
				
			||||||
				} else {
 | 
									} else {
 | 
				
			||||||
					duration += time.Hour * 24 * time.Duration(getNumbers(pts[4]))
 | 
										duration += time.Hour * 24 * time.Duration(getNumbers(pts[4]))
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
@ -60,8 +62,9 @@ func matchPattern01(str string) (startimer.StarTimer, bool) {
 | 
				
			|||||||
			setAsDate = true
 | 
								setAsDate = true
 | 
				
			||||||
			base = time.Date(base.Year(), base.Month(), base.Day(), 0, 0, 0, 0, base.Location())
 | 
								base = time.Date(base.Year(), base.Month(), base.Day(), 0, 0, 0, 0, base.Location())
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
							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 timeParse == "下午" || strings.Contains(timeParse, "晚") || strings.Contains(timeParse, "夜") {
 | 
				
			||||||
				hour += 12
 | 
									hour += 12
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
@ -73,7 +76,6 @@ func matchPattern01(str string) (startimer.StarTimer, bool) {
 | 
				
			|||||||
				base.Add(time.Hour * time.Duration(hour))
 | 
									base.Add(time.Hour * time.Duration(hour))
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		} else if timeParse != "" {
 | 
							} else if timeParse != "" {
 | 
				
			||||||
			var hour uint32
 | 
					 | 
				
			||||||
			switch timeParse {
 | 
								switch timeParse {
 | 
				
			||||||
			case "上午":
 | 
								case "上午":
 | 
				
			||||||
				hour = 9
 | 
									hour = 9
 | 
				
			||||||
@ -104,8 +106,12 @@ func matchPattern01(str string) (startimer.StarTimer, bool) {
 | 
				
			|||||||
			} else {
 | 
								} else {
 | 
				
			||||||
				base.Add(time.Minute * time.Duration(uint32(getNumbers(pts[7]))))
 | 
									base.Add(time.Minute * time.Duration(uint32(getNumbers(pts[7]))))
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
							} else if hour != 0 {
 | 
				
			||||||
 | 
								if !rpt.Every && !setAsDate {
 | 
				
			||||||
 | 
									rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_MINUTE, Value: 0})
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if pts[8] != "" {
 | 
							if pts[8] != "" {
 | 
				
			||||||
			if !setAsDate && !rpt.Every {
 | 
								if !setAsDate && !rpt.Every {
 | 
				
			||||||
				rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_SECOND, Value: uint32(getNumbers(pts[8]))})
 | 
									rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_SECOND, Value: uint32(getNumbers(pts[8]))})
 | 
				
			||||||
@ -114,40 +120,123 @@ func matchPattern01(str string) (startimer.StarTimer, bool) {
 | 
				
			|||||||
			} 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 {
 | 
				
			||||||
 | 
								if !rpt.Every && !setAsDate {
 | 
				
			||||||
 | 
									rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_SECOND, Value: 0})
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if pts[9] != "" {
 | 
				
			||||||
 | 
								if rpt.Every {
 | 
				
			||||||
 | 
									return startimer.StarTimer{}, errors.New("Invalid Setences")
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								now := time.Now()
 | 
				
			||||||
 | 
								for _, sr := range rpt.Repeat {
 | 
				
			||||||
 | 
									switch sr.Unit {
 | 
				
			||||||
 | 
									case startimer.STAR_YEAR:
 | 
				
			||||||
 | 
										now = now.AddDate(int(sr.Value), 0, 0)
 | 
				
			||||||
 | 
									case startimer.STAR_MONTH:
 | 
				
			||||||
 | 
										now = now.AddDate(0, int(sr.Value), 0)
 | 
				
			||||||
 | 
									case startimer.STAR_DAY:
 | 
				
			||||||
 | 
										now = now.AddDate(0, 0, int(sr.Value))
 | 
				
			||||||
 | 
									case startimer.STAR_HOUR:
 | 
				
			||||||
 | 
										now = now.Add(time.Duration(sr.Value) * time.Hour)
 | 
				
			||||||
 | 
									case startimer.STAR_MINUTE:
 | 
				
			||||||
 | 
										now = now.Add(time.Duration(sr.Value) * time.Minute)
 | 
				
			||||||
 | 
									case startimer.STAR_SECOND:
 | 
				
			||||||
 | 
										now = now.Add(time.Duration(sr.Value) * time.Second)
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								return startimer.NewTimer(time.Now(), startimer.WithStaticDate(now), startimer.WithRunCountLimit(count)), nil
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		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())})
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		return startimer.NewTimer(base, startimer.WithRepeats(&rpt)), true
 | 
							return startimer.NewTimer(base, startimer.WithRepeats(&rpt), startimer.WithRunCountLimit(count)), nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return startimer.StarTimer{}, false
 | 
						return startimer.StarTimer{}, errors.New("no Match")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					func matchPeroidPattern02(base time.Time, str string) (startimer.StarTimer, error) {
 | 
				
			||||||
func matchPattern02(str string) (startimer.Repeats, bool) {
 | 
					 | 
				
			||||||
	str = transChn(str)
 | 
						str = transChn(str)
 | 
				
			||||||
	var rpt startimer.Repeats
 | 
						var rpt startimer.Repeats
 | 
				
			||||||
	reg := regexp.MustCompile(`(每隔|每)?(周[周到1-6日]+)+([上中下午夜早凌清晨傍晚里]+)?(\d{1,4}[个点小时:]+)?(\d{1,4}[分:])?(\d{1,10}秒?)?`)
 | 
						reg := regexp.MustCompile(`(每)?([周星期礼拜][周礼拜星期到1-6日天]+)+的?([上中下午夜早凌清晨傍晚里]+)?(\d{1,4}[个点时:]+)?(\d{1,4}[分:])?(\d{1,10}秒?)?`)
 | 
				
			||||||
	if reg.MatchString(str) {
 | 
						if reg.MatchString(str) {
 | 
				
			||||||
		pts := reg.FindStringSubmatch(str)
 | 
							pts := reg.FindStringSubmatch(str)
 | 
				
			||||||
		if pts[1] != "" {
 | 
					 | 
				
			||||||
			rpt.Every = true
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		if pts[2] != "" {
 | 
							if pts[2] != "" {
 | 
				
			||||||
			if strings.Contains(pts[2], "到") {
 | 
								wk := strings.ReplaceAll(pts[2], "周日", "周0")
 | 
				
			||||||
				se := strings.Split(pts[2], "到")
 | 
								wk = strings.ReplaceAll(wk, "礼拜天", "周0")
 | 
				
			||||||
				start := getNumbers(se[0])
 | 
								wk = strings.ReplaceAll(wk, "星期日", "周0")
 | 
				
			||||||
				end := getNumbers(se[1])
 | 
								wk = strings.ReplaceAll(wk, "星期天", "周0")
 | 
				
			||||||
				if end >= start {
 | 
								wk = strings.ReplaceAll(wk, "周天", "周0")
 | 
				
			||||||
					for i := start; i <= end; i++ {
 | 
								if strings.Contains(wk, "到") {
 | 
				
			||||||
						startimer.NextDayOfWeek()
 | 
									pk := strings.Split(wk, "到")
 | 
				
			||||||
 | 
									startWk := getNumbers(pk[0])
 | 
				
			||||||
 | 
									endWk := getNumbers(pk[1])
 | 
				
			||||||
 | 
									if endWk < startWk {
 | 
				
			||||||
 | 
										endWk += 7
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									for i := startWk; i <= endWk; i++ {
 | 
				
			||||||
 | 
										num := i
 | 
				
			||||||
 | 
										if num > 6 {
 | 
				
			||||||
 | 
											num -= 7
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
 | 
										rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_WEEK, Value: uint32(num)})
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							timeParse := pts[3]
 | 
				
			||||||
 | 
							var hour uint32
 | 
				
			||||||
 | 
							if pts[4] != "" {
 | 
				
			||||||
 | 
								hour = uint32(getNumbers(pts[4]))
 | 
				
			||||||
 | 
								if timeParse == "下午" || strings.Contains(timeParse, "晚") || strings.Contains(timeParse, "夜") {
 | 
				
			||||||
 | 
									hour += 12
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_HOUR, Value: hour})
 | 
				
			||||||
 | 
							} else if timeParse != "" {
 | 
				
			||||||
 | 
								switch timeParse {
 | 
				
			||||||
 | 
								case "上午":
 | 
				
			||||||
 | 
									hour = 9
 | 
				
			||||||
 | 
								case "中午":
 | 
				
			||||||
 | 
									hour = 8
 | 
				
			||||||
 | 
								case "下午":
 | 
				
			||||||
 | 
									hour = 15
 | 
				
			||||||
 | 
								case "傍晚":
 | 
				
			||||||
 | 
									hour = 18
 | 
				
			||||||
 | 
								case "夜里", "晚上", "晚", "夜", "夜晚":
 | 
				
			||||||
 | 
									hour = 21
 | 
				
			||||||
 | 
								case "凌晨":
 | 
				
			||||||
 | 
									hour = 0
 | 
				
			||||||
 | 
								case "清晨":
 | 
				
			||||||
 | 
									hour = 6
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_HOUR, Value: hour})
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if pts[5] != "" {
 | 
				
			||||||
 | 
								rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_MINUTE, Value: uint32(getNumbers(pts[5]))})
 | 
				
			||||||
 | 
							} else if hour != 0 {
 | 
				
			||||||
 | 
								rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_MINUTE, Value: 0})
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if pts[6] != "" {
 | 
				
			||||||
 | 
								rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_SECOND, Value: uint32(getNumbers(pts[6]))})
 | 
				
			||||||
 | 
							} else if hour != 0 {
 | 
				
			||||||
 | 
								rpt.Repeat = append(rpt.Repeat, startimer.Repeat{Unit: startimer.STAR_SECOND, Value: 0})
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							count := 1
 | 
				
			||||||
 | 
							if pts[1] != "" {
 | 
				
			||||||
 | 
								count = 0
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return startimer.NewTimer(base, startimer.WithRepeats(&rpt), startimer.WithRunCountLimit(count)), nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						return startimer.StarTimer{}, errors.New("no Match")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func WhenWithPeriod(str string) (startimer.StarTimer, error) {
 | 
				
			||||||
 | 
						if match, _ := regexp.MatchString(`(周|星期|礼拜)[一二三四五六天日]`, str); match {
 | 
				
			||||||
 | 
							return matchPeroidPattern02(time.Now(), str)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return matchPeriodPattern01(time.Now(), str)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
*/
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
func transChn(msg string) string {
 | 
					func transChn(msg string) string {
 | 
				
			||||||
	var res []rune
 | 
						var res []rune
 | 
				
			||||||
							
								
								
									
										14
									
								
								when/parse_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								when/parse_test.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					package when
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"testing"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func TestParse(t *testing.T) {
 | 
				
			||||||
 | 
						for _, code := range []string{"一个小时后告诉我事情", "三个小时后爱我", "每两个小时提醒我吃饭", "每五个月零二十五天三小时25分15秒告诉我时间", "5月23日上午3点24分12秒打我", "周四上午11点提醒我"} {
 | 
				
			||||||
 | 
							a, _ := WhenWithPeriod(code)
 | 
				
			||||||
 | 
							//fmt.Println(a.Repeats()[0])
 | 
				
			||||||
 | 
							fmt.Println(a.NextTimer(), a.RunCountLimit(), code)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user