summaryrefslogtreecommitdiff
path: root/rmtodo2.hs
diff options
context:
space:
mode:
Diffstat (limited to 'rmtodo2.hs')
-rw-r--r--rmtodo2.hs25
1 files changed, 25 insertions, 0 deletions
diff --git a/rmtodo2.hs b/rmtodo2.hs
new file mode 100644
index 0000000..3d2e249
--- /dev/null
+++ b/rmtodo2.hs
@@ -0,0 +1,25 @@
+import System.IO
+import System.Directory
+import Data.List
+import Control.Exception
+
+main = do
+ contents <- readFile "todo.txt"
+ let todoTasks = lines contents
+ numberedTasks = zipWith (\n line -> show n ++ " - " ++ line) [0..] todoTasks
+ putStrLn "These are your TO-DO items:"
+ mapM_ putStrLn numberedTasks
+ putStrLn "Which one do you want to delete?"
+ numberString <- getLine
+ let number = read numberString
+ newTodoItems = unlines $ delete (todoTasks !! number) todoTasks
+ bracketOnError (openTempFile "." "temp")
+ (\(tempName,tempHandle) -> do
+ hClose tempHandle
+ removeFile tempName)
+ (\(tempName,tempHandle) -> do
+ hPutStr tempHandle newTodoItems
+ hClose tempHandle
+ removeFile "todo.txt"
+ renameFile tempName "todo.txt")
+