Work Study Log

Run Settings
LanguageHaskell
Language Version
Run Command
import System.Directory import Control.Arrow --https://stackoverflow.com/questions/40297001/split-a-list-at-the-first-occurrence-of-an-element --splitList splitAtFirst :: Eq a => a -> [a] -> ([a], [a]) splitAtFirst x = (id *** drop 1) . break (x ==) convertToTime :: ([Char],[Char]) -> Int convertToTime (hc,sc) = h*60 + s where h | 'P' `elem` sc = 12+(read hc :: Int) | otherwise = read hc :: Int s = read scI :: Int scI = init (init sc) --convertToTime (h,s) = (read h :: Int)*60 + (read s :: Int) convertToInt :: String -> Int convertToInt x = convertToTime (splitAtFirst ':' x) convertToString :: Int -> String convertToString x = (show h)++":"++(show s) where h = x `quot` 60 s = x `rem` 60 dTime :: String -> String -> String dTime x y = convertToString (convertToInt y - convertToInt x) wage :: String -> String wage hs = roundTwo (show $ (read (show (convertToInt (hs++"XX"))) :: Double)*z) where z = 8.25/60 roundString :: ([Char],[Char]) -> String roundString (x,c) | length c > 2 = roundString (x,init c) | otherwise = x++"."++c roundTwo :: String -> String roundTwo x = roundString (splitAtFirst '.' x) input :: String -> String -> IO () input file logF = do print "Start Time: " st <- getLine print "End Time: " et <- getLine let dT = dTime st et let newL = "\n|\t"++st++"\t|\t"++et++"\t|\t"++dT++"\t|\t$"++wage dT putStrLn (newL ++ "\n") appendFile file newL main = do let file = "log.txt" let swap = "log_swp.txt" logFile <- readFile file writeFile swap logFile input swap logFile removeFile file renameFile swap file --test contents <- readFile file putStr contents
| Start Time | End Time | Total Time | Amount Earned
Editor Settings
Theme
Key bindings
Full width
Lines