about summary refs log tree commit diff
path: root/tools
diff options
context:
space:
mode:
author"Vincent Ambo ext:(%22) <tazjin@gmail.com>2013-04-28T11·12+0200
committer"Vincent Ambo ext:(%22) <tazjin@gmail.com>2013-04-28T11·12+0200
commit247265f35499d82706fb99ac0a68c90cc169ca1a (patch)
tree08162c6a14aa354d199f133f807eb7b48e2c9fb5 /tools
parentb3fb7f0f341bf3574a5c42fbbf3e0ddc3ea286a1 (diff)
* saved the function that I cleaned the comments with. The function is horrendous
Diffstat (limited to 'tools')
-rw-r--r--tools/fixcomments.hs21
1 files changed, 21 insertions, 0 deletions
diff --git a/tools/fixcomments.hs b/tools/fixcomments.hs
new file mode 100644
index 000000000000..dc89dbdd647f
--- /dev/null
+++ b/tools/fixcomments.hs
@@ -0,0 +1,21 @@
+
+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
\ No newline at end of file