1 {-# OPTIONS_GHC -Wall #-}
2 module LogAnalysis where
6 parseMessage :: String -> LogMessage
7 parseMessage s = let ws = words s in
10 parseMessage' ("I":ts:ws') = LogMessage Info (read ts) (unwords ws')
11 parseMessage' ("W":ts:ws') = LogMessage Warning (read ts) (unwords ws')
12 parseMessage' ("E":level:ts:ws') = LogMessage (Error (read level)) (read ts) (unwords ws')
13 parseMessage' x = Unknown (unwords x)
15 parse :: String -> [LogMessage]
16 parse s = map parseMessage (lines s)