@@ -8,6 +8,7 @@ import Control.Monad
88import Data.Aeson
99import qualified Data.HashMap.Strict as HM
1010import Data.Monoid
11+import Data.Text (Text)
1112import Data.Text.Lazy.Builder
1213import Data.Text.Lazy.IO as T
1314import Data.Time
@@ -26,18 +27,17 @@ brackets m = fromText "[" <> m <> fromText "]"
2627
2728-------------------------------------------------------------------------------
2829getKeys :: LogItem s => Verbosity -> s -> [Builder]
29−getKeys verb a = rendPair A.<$> HM.toList (payloadObject verb a)
30+getKeys verb a = concat (renderPair A.<$> HM.toList (payloadObject verb a))
3031 where
31− rendPair (k,v) = fromText k <> fromText ":" <> (renderPrim v)
32−
33−
34−-------------------------------------------------------------------------------
35−renderPrim :: Value -> Builder
36−renderPrim (String t) = fromText t
37−renderPrim (Number s) = fromString (show s)
38−renderPrim (Bool b) = fromString (show b)
39−renderPrim Null = fromText "null"
40−renderPrim _ = mempty
32+ renderPair :: (Text, Value) -> [Builder]
33+ renderPair (k,v) =
34+ case v of
35+ Object o -> concat [renderPair (k <> "." <> k', v') | (k', v') <- HM.toList o]
36+ String t -> [fromText (k <> ":" <> t)]
37+ Number n -> [fromText (k <> ":") <> fromString (show n)]
38+ Bool b -> [fromText (k <> ":") <> fromString (show b)]
39+ Null -> [fromText (k <> ":null")]
40+ _ -> mempty -- Can't think of a sensible way to handle arrays
4141
4242
4343-------------------------------------------------------------------------------