summaryrefslogtreecommitdiff
path: root/Types/ScheduledActivity.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Types/ScheduledActivity.hs')
-rw-r--r--Types/ScheduledActivity.hs13
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