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.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 _ _ = 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