diff options
Diffstat (limited to 'Types/ScheduledActivity.hs')
-rw-r--r-- | Types/ScheduledActivity.hs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/Types/ScheduledActivity.hs b/Types/ScheduledActivity.hs index e29050d8e..386f42333 100644 --- a/Types/ScheduledActivity.hs +++ b/Types/ScheduledActivity.hs @@ -12,6 +12,8 @@ import Utility.Scheduled import Utility.HumanTime import Types.UUID +import Data.Either + data ScheduledActivity = ScheduledSelfFsck Schedule Duration | ScheduledRemoteFsck UUID Schedule Duration @@ -48,3 +50,14 @@ parseScheduledActivity s = case words s of qualified (Left e) = Left $ e ++ " in \"" ++ s ++ "\"" qualified v = v getduration d = maybe (Left $ "failed to parse duration \""++d++"\"") Right (parseDuration d) + +fromScheduledActivities :: [ScheduledActivity] -> String +fromScheduledActivities = intercalate "; " . map fromScheduledActivity + +parseScheduledActivities :: String -> Either String [ScheduledActivity] +parseScheduledActivities s + | null bad = Right good + | otherwise = Left $ intercalate "; " bad + where + (bad, good) = partitionEithers $ + map parseScheduledActivity $ split "; " s |