tvl-depot/tools/fixcomments.hs

21 lines
No EOL
1 KiB
Haskell

fixComments :: AcidState Blog -> IO ()
fixComments acid = do
entriesDE <- query' acid $ LatestEntries DE
entriesEN <- query' acid $ LatestEntries EN
filterComments entriesDE
filterComments entriesEN
where
(cDate :: UTCTime) = fromJust $ parseTime defaultTimeLocale "%d.%m.%Y %T" "22.04.2012 21:57:35"
foldOp :: [(EntryId, [UTCTime])] -> Entry -> [(EntryId, [UTCTime])]
foldOp l e = let c = map cdate $ filter (\c1 -> cdate c1 > cDate) $ comments e
in if null c then l
else (entryId e, c) : l
pred :: Entry -> Bool
pred e = let f eId [] = False
f eId (c:r) = if (cdate c > cDate) then True
else f eId r
in f (entryId e) (comments e)
filterComments entries = mapM_ removeComments $ foldl foldOp [] $ filter pred entries
removeComments :: (EntryId, [UTCTime]) -> IO ()
removeComments (eId, comments) = mapM_ (\c -> update' acid $ DeleteComment eId c) comments