25 lines
650 B
Haskell
25 lines
650 B
Haskell
module AesonHelp where
|
|
|
|
import Data.Aeson (ToJSON)
|
|
import qualified Data.Aeson.Encode.Pretty as AEP
|
|
import Data.ByteString.Lazy.Char8 (unpack)
|
|
import Data.Maybe
|
|
|
|
getPretty :: ToJSON a => a -> [String]
|
|
getPretty = lines . unpack . AEP.encodePretty' (AEP.Config (AEP.Spaces 2) compare AEP.Generic False)
|
|
|
|
prettyShort :: ToJSON a => a -> [String]
|
|
prettyShort = mapMaybe cullPretty . getPretty
|
|
|
|
cullPretty :: String -> Maybe String
|
|
cullPretty s = case dropWhile (== ' ') s of
|
|
']' : _ -> Nothing
|
|
'[' : _ -> Nothing
|
|
'}' : _ -> Nothing
|
|
'{' : _ -> Nothing
|
|
_ -> Just $ filter f s
|
|
where
|
|
f '_' = False
|
|
f '"' = False
|
|
f _ = True
|