module App.Behaviours.PrintEvents where import qualified Data.ByteString as B import Text.PrettyPrint import Data.Time import System.Locale import App.EventBus printEventsBehaviour :: Behaviour [EData a] printEventsBehaviour b = pollAllEventsWith b $ (\(Event n g lifetime edata source t) -> do putStrLn.render $ text "name: " <+> text n $+$ text "source: " <+> text source $+$ text "group: " <+> text g $+$ text "ttl: " <+> text (show lifetime) $+$ text "emitTime:" <+> text (formatTime defaultTimeLocale "%T" t) $+$ (vcat.map showIfPossible $ edata) return []) where showIfPossible (EString x) = text x showIfPossible (EByteString x) = text "ByteString" showIfPossible (EByteStringL x) = text "[ByteString]" showIfPossible (EInt x) = text (show x) showIfPossible (EDouble x) = text (show x) showIfPossible (EBool x) = text (show x) showIfPossible (EStringL x) = text (show x) showIfPossible (EIntL x) = text (show x) showIfPossible (EDoubleL x) = text (show x) showIfPossible (EBoolL x) = text (show x) showIfPossible (EChar x) = char x showIfPossible (EOther x) = text "Custom Data" showIfPossible (EOtherL x) = text "Custom Data List"