-
-data LogLine
- = LogLine String
-
-instance Show LogLine where
- show (LogLine x) = x
-
-data LogEntry
- = LogEntry
- { timestamp :: UTCTime
- , timezone :: TimeZone
- , text :: String
- }
-
-instance Show LogEntry where
- show x = (show $ timestamp x) ++ (show $ timezone x) ++ text x
-
-data DiddoEntry = DiddoEntry String String HMSTime String
-
-data DiddoEntry2 = DiddoEntry2
- { startTime :: ZonedTime
- , endTime :: ZonedTime
- , comment :: String
- }
-
-instance Show DiddoEntry where
- show (DiddoEntry start finish delta entry) = intercalate ";" [start,finish,(show delta),entry]
-
-instance Show DiddoEntry2 where
- show (DiddoEntry2 start finish entry) = intercalate ";" [show start,show finish,show $ diffSeconds (zonedTimeToUTC finish) (zonedTimeToUTC start),entry]
-
-formatDiddoEntry :: String -> DiddoEntry2 -> String
-formatDiddoEntry format (DiddoEntry2 start end comment) = (formatTime defaultTimeLocale format start) ++ ";" ++ (formatTime defaultTimeLocale format end) ++ ";" ++ (show $ secondsToHMS $ diffSeconds (zonedTimeToUTC end) (zonedTimeToUTC start)) ++ ";" ++ comment
-
-logToDiddoEntry :: UTCTime -> LogEntry -> DiddoEntry2
-logToDiddoEntry startutc logentry = DiddoEntry2 startZoned endZoned $ text logentry
+import Text.Printf( printf )
+import qualified Data.Text as T
+
+data LogEntry = LogEntry
+ { timestamp :: UTCTime
+ , timezone :: TimeZone
+ , text :: T.Text
+ }
+
+data Diddo = Diddo
+ { startTime :: ZonedTime
+ , endTime :: ZonedTime
+ , comment :: T.Text
+ }
+
+getTimestamp :: Diddo -> UTCTime
+getTimestamp = zonedTimeToUTC . endTime
+
+formatDiddo :: String -> Diddo -> T.Text
+formatDiddo format (Diddo start end text) = T.intercalate ";" diddoline
+ where
+ diddoline = [startZonedString, endZonedString, delta, text]
+ startZonedString = timeToText format start
+ endZonedString = timeToText format end
+ startUTC = zonedTimeToUTC start
+ endUTC = zonedTimeToUTC end
+ delta = diffTimeToHMSString $ diffUTCTime endUTC startUTC
+
+timeToText :: FormatTime a => String -> a -> T.Text
+timeToText format = T.pack . formatTime defaultTimeLocale format
+
+logToDiddo :: UTCTime -> LogEntry -> Diddo
+logToDiddo startutc logentry = Diddo startZoned endZoned $ text logentry