cron-0.5.0: src/System/Cron/Internal/Describe/Descriptors.hs
module System.Cron.Internal.Describe.Descriptors where
import System.Cron.Internal.Describe.Time
import System.Cron.Internal.Describe.Types
minuteDescriptor :: Descriptor
minuteDescriptor = Descriptor {
pluralDesc = "minutes"
, singularDesc = "minute"
, rangePrefix = "minutes"
, rangeSuffix = "past the hour"
, rangeJoiner = "through"
, displayItem = show
, specificPrefix = "at"
, specificSuffix = "minutes past the hour"
, stepSpecificSuffix = sss
, listPrefix = "at"
, listSuffix = Nothing
}
where
sss n
| n == 0 = Nothing
| otherwise = Just $ "starting at " ++ show n ++ " minutes past the hour"
hourDescriptor :: TimeFormat -> Descriptor
hourDescriptor tf = Descriptor {
pluralDesc = "hours"
, singularDesc = "hour"
, rangePrefix = "between"
, rangeSuffix = ""
, rangeJoiner = "and"
, displayItem = toHour
, specificPrefix = "at"
, specificSuffix = ""
, stepSpecificSuffix = sss
, listPrefix = "at"
, listSuffix = Nothing
}
where toHour h = format tf (Minute 0) (Hour h)
sss n
| n == 0 = Nothing
| otherwise = Just $ "starting at " ++ toHour n
domDescriptor :: Descriptor
domDescriptor = Descriptor {
pluralDesc = "days"
, singularDesc = "day"
, rangePrefix = "between days"
, rangeSuffix = "of the month"
, rangeJoiner = "and"
, displayItem = show
, specificPrefix = "on day"
, specificSuffix = "of the month"
, stepSpecificSuffix = sss
, listPrefix = "on days"
, listSuffix = Just "of the month"
}
where sss n = Just $ "starting on day " ++ show n ++ " of the month"
monthDescriptor :: Descriptor
monthDescriptor = Descriptor {
pluralDesc = "months"
, singularDesc = "month"
, rangePrefix = ""
, rangeSuffix = ""
, rangeJoiner = "through"
, displayItem = toMonth
, specificPrefix = "only in"
, specificSuffix = ""
, stepSpecificSuffix = sss
, listPrefix = "only in"
, listSuffix = Nothing
}
where toMonth = show . safeIntToMonth
sss n
| n == 1 = Nothing
| otherwise = Just $ toMonth n ++ " through " ++ toMonth 12
dowDescriptor :: Descriptor
dowDescriptor = Descriptor {
pluralDesc = "days of the week"
, singularDesc = "day of the week"
, rangePrefix = ""
, rangeSuffix = ""
, rangeJoiner = "through"
, displayItem = toWeekday
, specificPrefix = "only on"
, specificSuffix = ""
, stepSpecificSuffix = sss
, listPrefix = "only on"
, listSuffix = Nothing
}
where toWeekday = show . safeIntToWeekDay
sss n = Just $ toWeekday n ++ " through " ++ show Saturday