Match all asterisk pattern
This commit is contained in:
parent
ddfec7a8e4
commit
44dd3aad0a
22
src/Lib.hs
22
src/Lib.hs
@ -5,5 +5,25 @@ module Lib
|
|||||||
import Data.Bool
|
import Data.Bool
|
||||||
import Data.Dates
|
import Data.Dates
|
||||||
|
|
||||||
|
data Range = Any | Pair Int Int | Sequence [Int]
|
||||||
|
|
||||||
|
data Step = All | Value Int
|
||||||
|
|
||||||
|
data CronItemPattern = CronItemPattern Range Step
|
||||||
|
|
||||||
|
data CronPattern = CronPattern [CronItemPattern]
|
||||||
|
|
||||||
check :: DateTime -> String -> Bool
|
check :: DateTime -> String -> Bool
|
||||||
check _ _ = False
|
check d s = checkPattern d (parseCronPattern s)
|
||||||
|
|
||||||
|
parseCronPattern :: String -> CronPattern
|
||||||
|
parseCronPattern s = CronPattern $ map parseCronItemPattern $ words s
|
||||||
|
|
||||||
|
parseCronItemPattern :: String -> CronItemPattern
|
||||||
|
parseCronItemPattern "*" = CronItemPattern Any All
|
||||||
|
|
||||||
|
checkPattern :: DateTime -> CronPattern -> Bool
|
||||||
|
checkPattern d (CronPattern (x:xs)) = checkItemPattern (year d) x
|
||||||
|
|
||||||
|
checkItemPattern :: Int -> CronItemPattern -> Bool
|
||||||
|
checkItemPattern n (CronItemPattern Any All) = True
|
Loading…
Reference in New Issue
Block a user