packages feed

safe-money-cereal 0.1 → 0.1.1

raw patch · 4 files changed

+27/−16 lines, 4 filesdep ~safe-moneyPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: safe-money

API changes (from Hackage documentation)

+ Money.Cereal: instance Data.Serialize.Serialize Money.Internal.Scale

Files

changelog.md view
@@ -1,4 +1,9 @@+# Version 0.1.1++* Require `safe-money>=0.8`.++ # Version 0.1 -* This first release of @safe-money-cereal@ includes the same @cereal@ support-  and tests that were present in @safe-money-0.6@.+* This first release of `safe-money-cereal` includes the same `cereal` support+  and tests that were present in `safe-money-0.6`.
safe-money-cereal.cabal view
@@ -1,5 +1,5 @@ name: safe-money-cereal-version: 0.1+version: 0.1.1 license: BSD3 license-file: LICENSE copyright: Copyright (c) Renzo Carbonara 2016-2018@@ -33,7 +33,7 @@   build-depends:     base (>=4.8 && <5.0),     cereal,-    safe-money+    safe-money >=0.8   exposed-modules:     Money.Cereal 
src/Money/Cereal.hs view
@@ -56,23 +56,31 @@     when (d == 0) (fail "denominator is zero")     pure (MoneyI.mkSomeDense' c (n % d)) +instance Cereal.Serialize Money.Scale where+  put = \s -> do+    let r = Money.scaleToRational s+    Cereal.put (numerator r)+    Cereal.put (denominator r)+  get = maybe empty pure =<< do+    -- We go through String for backwards compatibility.+    n :: Integer <- Cereal.get+    d :: Integer <- Cereal.get+    when (d == 0) (fail "denominator is zero")+    pure (Money.scaleFromRational (n % d))+ -- | Compatible with 'Money.Discrete'. instance Cereal.Serialize Money.SomeDiscrete where   put = \sd -> do     -- We go through String for backwards compatibility.     Cereal.put (MoneyI.someDiscreteCurrency' sd)-    let r = Money.someDiscreteScale sd-    Cereal.put (numerator r)-    Cereal.put (denominator r)+    Cereal.put (Money.someDiscreteScale sd)     Cereal.put (Money.someDiscreteAmount sd)-  get = maybe empty pure =<< do+  get = do     -- We go through String for backwards compatibility.     c :: String <- Cereal.get-    n :: Integer <- Cereal.get-    d :: Integer <- Cereal.get-    when (d == 0) (fail "denominator is zero")+    s :: Money.Scale <- Cereal.get     a :: Integer <- Cereal.get-    pure (MoneyI.mkSomeDiscrete' c (n % d) a)+    pure (MoneyI.mkSomeDiscrete' c s a)  -- | Compatible with 'Money.ExchangeRate'. instance Cereal.Serialize Money.SomeExchangeRate where
test/Main.hs view
@@ -57,10 +57,8 @@ testCurrencyUnits :: Tasty.TestTree testCurrencyUnits =   Tasty.testGroup "Currency units"-  [ testDiscrete (Proxy :: Proxy "BTC") (Proxy :: Proxy "BTC")-  , testDiscrete (Proxy :: Proxy "BTC") (Proxy :: Proxy "satoshi")+  [ testDiscrete (Proxy :: Proxy "BTC") (Proxy :: Proxy "satoshi")   , testDiscrete (Proxy :: Proxy "BTC") (Proxy :: Proxy "bitcoin")-  , testDiscrete (Proxy :: Proxy "USD") (Proxy :: Proxy "USD")   , testDiscrete (Proxy :: Proxy "USD") (Proxy :: Proxy "cent")   , testDiscrete (Proxy :: Proxy "USD") (Proxy :: Proxy "dollar")   , testDiscrete (Proxy :: Proxy "VUV") (Proxy :: Proxy "vatu")@@ -115,7 +113,7 @@  testDiscrete   :: forall (currency :: Symbol) (unit :: Symbol)-  .  ( Money.GoodScale (Money.Scale currency unit)+  .  ( Money.GoodScale (Money.UnitScale currency unit)      , KnownSymbol currency      , KnownSymbol unit )   => Proxy currency