]> git.netwichtig.de Git - user/henk/code/haskell/diddohs.git/commitdiff
On branch master
authorHendrik Jaeger <henk@frustcomp>
Mon, 23 Dec 2013 23:14:12 +0000 (00:14 +0100)
committerHendrik Jaeger <henk@frustcomp>
Mon, 23 Dec 2013 23:14:12 +0000 (00:14 +0100)
      modified:   diddohs.hs
        CHANGED: cleanup and simplification

diddohs.hs

index 60beb319e6279dc9003c4a6bfe070ac59a6f24d2..f54ec2d91b77da4e7f845a0337615a229c3a8654 100644 (file)
@@ -15,16 +15,27 @@ data DiddoOpts = DiddoOpts
   , inFile :: String
   }
 
+calculateDeltas :: [DateTime] -> [Integer]
+calculateDeltas dateTimes = zipWith diffSeconds dateTimes ((startOfDay $ head dateTimes) : init dateTimes)
+
+parseDateTimeFormat :: String -> String -> DateTime
+parseDateTimeFormat format = fromMaybe (error "Input data broken.") . parseDateTime format
+
+startOfDay :: DateTime -> DateTime
+startOfDay = fromJust . parseDateTime "%x" . formatDateTime "%x"
+
 mainWithOpts :: DiddoOpts -> IO ()
-mainWithOpts opts = do
-  [timestrings_finish
-        , entries
-        ]                  <- transpose . map (splitOn ";") . lines <$> readFile (inFile opts)
-  let utcTimes_finish      = map (fromMaybe (error "Input data broken.") . parseDateTime (inDateFmt opts)) timestrings_finish
-      entry_deltas_HMMSS   = zipWith (\x y -> secondsToHMS $ diffSeconds x y) utcTimes_finish (startOfTime : init utcTimes_finish)
-      diddos_summarized    = zipWith4 DiddoEntry ("" : init timestrings_finish) timestrings_finish entry_deltas_HMMSS entries
-
-  mapM_ print diddos_summarized
+mainWithOpts opts =
+  do
+    [ timeStrings
+      , entries
+      ]                     <- transpose . map (splitOn ";") . lines <$> readFile (inFile opts)
+
+    let
+      deltasHMS             = map secondsToHMS $ calculateDeltas $ map (parseDateTimeFormat (inDateFmt opts)) timeStrings
+      diddos_summarized     = zipWith4 DiddoEntry ("" : init timeStrings) timeStrings deltasHMS entries
+
+    mapM_ print diddos_summarized
 
 main :: IO ()
 main = execParser opts >>= mainWithOpts