From 2150942876eac1a626331ad2382aa1f4e1e4982a Mon Sep 17 00:00:00 2001 From: Elouan Martinet Date: Mon, 16 Nov 2020 18:16:11 +0100 Subject: [PATCH] Add day format support for duration comparison --- core/condition.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/core/condition.go b/core/condition.go index 36cc9bf3..1d48d7b9 100644 --- a/core/condition.go +++ b/core/condition.go @@ -3,6 +3,7 @@ package core import ( "fmt" "log" + "regexp" "strconv" "strings" "time" @@ -186,7 +187,15 @@ func sanitizeAndResolve(list []string, result *Result) []string { func sanitizeAndResolveNumerical(list []string, result *Result) []int64 { var sanitizedNumbers []int64 sanitizedList := sanitizeAndResolve(list, result) + dayRegex := regexp.MustCompile(`^\s*(\d+)d\s*$`) for _, element := range sanitizedList { + if matches := dayRegex.FindStringSubmatch(element); matches != nil { + if days, err := strconv.ParseInt(matches[1], 10, 64); err == nil { + duration := time.Duration(days * int64(time.Hour * 24)) + sanitizedNumbers = append(sanitizedNumbers, duration.Milliseconds()) + continue + } + } if duration, err := time.ParseDuration(element); duration != 0 && err == nil { sanitizedNumbers = append(sanitizedNumbers, duration.Milliseconds()) } else if number, err := strconv.ParseInt(element, 10, 64); err != nil {