module Todos.Dates
(parseDate, getCurrentDateTime,
pSpecDates)
where
import Data.Dates
import Text.Parsec
import Todos.Types
dateType ∷ String → DateType
dateType "start" = StartDate
dateType "end" = EndDate
dateType "deadline" = Deadline
dateType _ = error "unknown date type"
pSpecDate ∷ DateTime → Parsec String st (DateType, DateTime)
pSpecDate date = do
tp ← choice $ map string ["start","end","deadline"]
string ": "
dt ← pDateTime date
return (dateType tp, dt)
pSpecDates ∷ DateTime → Parsec String st [(DateType, DateTime)]
pSpecDates date = do
char '('
pairs ← (pSpecDate date) `sepBy1` (string "; ")
string ") "
return pairs