hw-json 0.2.0.2 → 0.2.0.3
raw patch · 2 files changed
+29/−1 lines, 2 filesdep +ansi-wl-pprintPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
Dependencies added: ansi-wl-pprint
API changes (from Hackage documentation)
+ HaskellWorks.Data.Json.PartialValue: instance Text.PrettyPrint.ANSI.Leijen.Pretty HaskellWorks.Data.Json.PartialValue.JsonPartialField
+ HaskellWorks.Data.Json.PartialValue: instance Text.PrettyPrint.ANSI.Leijen.Pretty HaskellWorks.Data.Json.PartialValue.JsonPartialValue
Files
hw-json.cabal view
@@ -1,5 +1,5 @@ name: hw-json-version: 0.2.0.2+version: 0.2.0.3 synopsis: Conduits for tokenizing streams. description: Please see README.md homepage: http://github.com/haskell-works/hw-json#readme@@ -66,6 +66,7 @@ , HaskellWorks.Data.Json.Value.Internal build-depends: base >= 4 && < 5 , array+ , ansi-wl-pprint , attoparsec , bytestring , conduit
src/HaskellWorks/Data/Json/PartialValue.hs view
@@ -15,6 +15,7 @@ import qualified Data.ByteString as BS import HaskellWorks.Data.Json.Succinct.PartialIndex import HaskellWorks.Data.Json.Value.Internal+import Text.PrettyPrint.ANSI.Leijen data JsonPartialValue = JsonPartialString String@@ -56,3 +57,29 @@ ABC.Fail {} -> JsonPartialError ("Invalid field: '" ++ show (BS.take 20 bs) ++ "...'") ABC.Partial _ -> JsonPartialError "Unexpected end of field" ABC.Done _ s -> JsonPartialString s++data JsonPartialField = JsonPartialField String JsonPartialValue++toJsonPartialField :: (String, JsonPartialValue) -> JsonPartialField+toJsonPartialField (k, v) = JsonPartialField k v++instance Pretty JsonPartialField where+ pretty (JsonPartialField k v) = text (show k) <> text ": " <> pretty v++hEncloseSep :: Doc -> Doc -> Doc -> [Doc] -> Doc+hEncloseSep l r s ds+ = case ds of+ [] -> l <> r+ [d] -> l <> d <> r+ _ -> hcat (zipWith (<>) (l : repeat s) ds) <> r++instance Pretty JsonPartialValue where+ pretty mjpv = case mjpv of+ JsonPartialString s -> dullgreen (text (show s))+ JsonPartialNumber n -> cyan (text (show n))+ JsonPartialObject [] -> text "{}"+ JsonPartialObject kvs -> hEncloseSep (text "{{") (text "}}") (text ",") ((pretty . toJsonPartialField) `map` kvs)+ JsonPartialArray vs -> hEncloseSep (text "[") (text "]") (text ",") (pretty `map` vs)+ JsonPartialBool w -> red (text (show w))+ JsonPartialNull -> text "null"+ JsonPartialError s -> text "<error " <> text s <> text ">"