aeson-yaml 1.0.4.0 → 1.0.5.0
raw patch · 4 files changed
+45/−19 lines, 4 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- CHANGELOG.md +12/−0
- aeson-yaml.cabal +1/−1
- src/Data/Aeson/Yaml.hs +20/−17
- test/Test/Data/Aeson/Yaml.hs +12/−1
CHANGELOG.md view
@@ -1,5 +1,17 @@ # Changelog +## 1.0.5.0 - 2019-11-30++### Fixed++ - Encode empty objects as "{}" rather than ""++## 1.0.4.0 - 2019-11-06++### Fixed++ - Quote date strings (e.g. "2038-01-19")+ ## 1.0.3.0 - 2019-11-03 ### Fixed
aeson-yaml.cabal view
@@ -1,7 +1,7 @@ cabal-version: 1.12 name: aeson-yaml-version: 1.0.4.0+version: 1.0.5.0 homepage: https://github.com/clovyr/aeson-yaml bug-reports: https://github.com/clovyr/aeson-yaml/issues author: Patrick Nielsen
src/Data/Aeson/Yaml.hs view
@@ -82,22 +82,23 @@ encodeBuilder :: Bool -> Bool -> Int -> Data.Aeson.Value -> Builder encodeBuilder alwaysQuote newlineBeforeObject level value = case value of- Object hm ->- mconcat $- (if newlineBeforeObject- then (prefix :)- else id) $- intersperse prefix $ map (keyValue level) (sortOn fst $ HashMap.toList hm)+ Object hm+ | null hm -> bs "{}"+ | otherwise ->+ mconcat $+ (if newlineBeforeObject+ then (prefix :)+ else id) $+ intersperse prefix $+ map (keyValue level) (sortOn fst $ HashMap.toList hm) where prefix = bs "\n" <> indent level- Array vec ->- if Vector.null vec- then bs " []"- else mconcat $- (prefix :) $- intersperse prefix $- map- (encodeBuilder alwaysQuote False (level + 1))- (Vector.toList vec)+ Array vec+ | null vec -> bs "[]"+ | otherwise ->+ mconcat $+ (prefix :) $+ intersperse prefix $+ map (encodeBuilder alwaysQuote False (level + 1)) (Vector.toList vec) where prefix = bs "\n" <> indent level <> bs "- " String s -> encodeText True alwaysQuote level s Number n -> bl (Data.Aeson.encode n)@@ -109,8 +110,10 @@ [ encodeText False alwaysQuote level k , ":" , case v of- Object _ -> ""- Array _ -> ""+ Object hm+ | not (null hm) -> ""+ Array vec+ | not (null vec) -> "" _ -> " " , encodeBuilder alwaysQuote True (level' + 1) v ]
test/Test/Data/Aeson/Yaml.hs view
@@ -29,8 +29,17 @@ } testCases :: [TestCase]-testCases = [tcDataTypes, tcNestedListsAndObjects, tcQuoted]+testCases = [tcDataTypes, tcNestedListsAndObjects, tcQuoted, tcEmptyList] +tcEmptyList :: TestCase+tcEmptyList = + TestCase+ { tcName = "Empty root list"+ , tcInput = "[]"+ , tcOutput = "[]\n"+ , tcAlwaysQuote = False+ }+ tcDataTypes :: TestCase tcDataTypes = TestCase@@ -39,6 +48,7 @@ [s| { "nullValue": null,+ "emptyObject": {}, "isTrue": true, "isFalse": false, "numberString": "12345",@@ -59,6 +69,7 @@ [s|asteriskString: "*" boolString: "true" dateString: "2038-01-19"+emptyObject: {} expString: "1e3" isFalse: false isTrue: true