{-# LANGUAGE OverloadedStrings #-}
module Bunyan.Pretty (pretty) where
import qualified Data.Foldable as F
import qualified Data.Map as M
import Data.Monoid ((<>))
import qualified Data.Sequence as S
import qualified Data.Text as T
pretty :: M.Map T.Text (S.Seq (S.Seq T.Text)) -> T.Text
pretty messages = T.unlines $ concat
[ section annot fields
| (annot, fields) <- M.toList messages
, not (S.null fields)
]
section :: T.Text -> S.Seq (S.Seq T.Text) -> [T.Text]
section annot fields =
let bullet [] = []
bullet (x:xs) = ("* " <> x) : map (" " <>) xs
in "" : (annot <> ":") : F.foldMap bullet (fmap F.toList fields)