diff options
Diffstat (limited to 'rmtodo2.hs')
-rw-r--r-- | rmtodo2.hs | 25 |
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") + |