Match all asterisk pattern

This commit is contained in:
Anton Vakhrushev 2017-11-11 10:25:47 +03:00
parent ddfec7a8e4
commit 44dd3aad0a

View File

@ -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