packages feed

lawful-conversions 0.1.2.2 → 0.1.3

raw patch · 12 files changed

+193/−12 lines, 12 filesdep +timePVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: time

API changes (from Hackage documentation)

+ LawfulConversions: ($dmfrom) :: (IsMany a b, IsSome b a) => a -> b
+ LawfulConversions: ($dmmaybeFrom) :: (IsSome a b, IsSome b a) => a -> Maybe b
- LawfulConversions: class (IsSome a b) => IsMany a b
+ LawfulConversions: class IsSome a b => IsMany a b
- LawfulConversions: from :: (IsMany a b, IsSome b a) => a -> b
+ LawfulConversions: from :: IsMany a b => a -> b
- LawfulConversions: maybeFrom :: (IsSome a b, IsSome b a) => a -> Maybe b
+ LawfulConversions: maybeFrom :: IsSome a b => a -> Maybe b

Files

lawful-conversions.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.0 name: lawful-conversions-version: 0.1.2.2+version: 0.1.3 synopsis: Lawful typeclasses for bidirectional conversion between types category: Conversion homepage: https://github.com/nikita-volkov/lawful-conversions@@ -18,11 +18,11 @@    Lawful typeclasses capturing three patterns of bidirectional mapping and forming a layered hierarchy with an ascending strictness of laws. -  1. `IsSome`: Smart constructor+  1. Smart constructor -  2. `IsMany`: Lossy conversion+  2. Canonicalization or lossy conversion -  3. `Is`: Isomorphism or lossless conversion+  3. Isomorphism or lossless conversion    = The conversion problem @@ -120,19 +120,24 @@     LawfulConversions.Relations.LazyTextAndStrictTextBuilder     LawfulConversions.Relations.LazyTextAndString     LawfulConversions.Relations.LazyTextAndText+    LawfulConversions.Relations.LazyTextAndUtcTime     LawfulConversions.Relations.LazyTextAndUuid     LawfulConversions.Relations.LazyTextBuilderAndStrictTextBuilder     LawfulConversions.Relations.LazyTextBuilderAndString     LawfulConversions.Relations.LazyTextBuilderAndText+    LawfulConversions.Relations.LazyTextBuilderAndUtcTime     LawfulConversions.Relations.LazyTextBuilderAndUuid     LawfulConversions.Relations.ListAndSeq     LawfulConversions.Relations.ShortByteStringAndTextArray     LawfulConversions.Relations.ShortByteStringAndWord8List     LawfulConversions.Relations.StrictTextBuilderAndString     LawfulConversions.Relations.StrictTextBuilderAndText+    LawfulConversions.Relations.StrictTextBuilderAndUtcTime     LawfulConversions.Relations.StrictTextBuilderAndUuid     LawfulConversions.Relations.StringAndText+    LawfulConversions.Relations.StringAndUtcTime     LawfulConversions.Relations.StringAndUuid+    LawfulConversions.Relations.TextAndUtcTime     LawfulConversions.Relations.TextAndUuid     LawfulConversions.Relations.TextArrayAndWord8List     LawfulConversions.TextCompat.Array@@ -146,6 +151,7 @@     primitive >=0.7 && <0.10,     profunctors >=5 && <6,     text >=1.2 && <2.2,+    time >=1.9 && <2,     unordered-containers >=0.2 && <0.3,     uuid-types >=1.0 && <1.1,     vector >=0.12 && <0.14,
src/library/LawfulConversions/Optics.hs view
@@ -4,7 +4,7 @@ import LawfulConversions.Classes import LawfulConversions.Prelude --- | Van-Laarhoven-style Prism, compatible with the \"lens\" library.+-- | Van-Laarhoven-style Prism, compatible with libraries like \"lens\" and \"optics\". isSomePrism :: (IsSome a b, Choice p, Applicative f) => p b (f b) -> p a (f a) isSomePrism =   dimap@@ -12,10 +12,10 @@     (either pure (fmap to))     . right' --- | Van-Laarhoven-style Isomorphism, compatible with the \"lens\" library.+-- | Van-Laarhoven-style Isomorphism, compatible with libraries like \"lens\" and \"optics\". isManyIso :: (IsMany a b, Profunctor p, Functor f) => p b (f b) -> p a (f a) isManyIso = dimap from (fmap to) --- | Van-Laarhoven-style Isomorphism, compatible with the \"lens\" library.+-- | Van-Laarhoven-style Isomorphism, compatible with libraries like \"lens\" and \"optics\". isIso :: (Is a b, Profunctor p, Functor f) => p b (f b) -> p a (f a) isIso = isManyIso
src/library/LawfulConversions/Relations/LazyTextAndStrictTextBuilder.hs view
@@ -3,7 +3,28 @@  module LawfulConversions.Relations.LazyTextAndStrictTextBuilder where -#if MIN_VERSION_text(2,0,2)+#if MIN_VERSION_text(2,1,2)++import qualified Data.Text.Encoding+import qualified Data.Text.Lazy+import LawfulConversions.Classes+import LawfulConversions.Prelude++instance IsSome Data.Text.Lazy.Text Data.Text.Encoding.StrictTextBuilder where+  to = Data.Text.Lazy.fromStrict . Data.Text.Encoding.strictBuilderToText++instance IsSome Data.Text.Encoding.StrictTextBuilder Data.Text.Lazy.Text where+  to = Data.Text.Encoding.textToStrictBuilder . Data.Text.Lazy.toStrict++instance IsMany Data.Text.Lazy.Text Data.Text.Encoding.StrictTextBuilder++instance IsMany Data.Text.Encoding.StrictTextBuilder Data.Text.Lazy.Text++instance Is Data.Text.Lazy.Text Data.Text.Encoding.StrictTextBuilder++instance Is Data.Text.Encoding.StrictTextBuilder Data.Text.Lazy.Text++#elif MIN_VERSION_text(2,0,2)  import qualified Data.Text.Encoding import qualified Data.Text.Lazy
+ src/library/LawfulConversions/Relations/LazyTextAndUtcTime.hs view
@@ -0,0 +1,14 @@+{-# OPTIONS_GHC -Wno-orphans #-}++module LawfulConversions.Relations.LazyTextAndUtcTime where++import qualified Data.Text.Lazy+import Data.Time+import LawfulConversions.Classes+import LawfulConversions.Prelude+import LawfulConversions.Relations.LazyTextAndString ()+import LawfulConversions.Relations.StringAndUtcTime ()++instance IsSome Data.Text.Lazy.Text UTCTime where+  to = fromString . to+  maybeFrom = maybeFrom @String . to
src/library/LawfulConversions/Relations/LazyTextBuilderAndStrictTextBuilder.hs view
@@ -3,7 +3,29 @@  module LawfulConversions.Relations.LazyTextBuilderAndStrictTextBuilder where -#if MIN_VERSION_text(2,0,2)+#if MIN_VERSION_text(2,1,2)++import qualified Data.Text.Encoding+import qualified Data.Text.Lazy+import qualified Data.Text.Lazy.Builder+import LawfulConversions.Classes+import LawfulConversions.Prelude++instance IsSome Data.Text.Lazy.Builder.Builder Data.Text.Encoding.StrictTextBuilder where+  to = Data.Text.Lazy.Builder.fromText . Data.Text.Encoding.strictBuilderToText++instance IsSome Data.Text.Encoding.StrictTextBuilder Data.Text.Lazy.Builder.Builder where+  to = Data.Text.Encoding.textToStrictBuilder . Data.Text.Lazy.toStrict . Data.Text.Lazy.Builder.toLazyText++instance IsMany Data.Text.Lazy.Builder.Builder Data.Text.Encoding.StrictTextBuilder++instance IsMany Data.Text.Encoding.StrictTextBuilder Data.Text.Lazy.Builder.Builder++instance Is Data.Text.Lazy.Builder.Builder Data.Text.Encoding.StrictTextBuilder++instance Is Data.Text.Encoding.StrictTextBuilder Data.Text.Lazy.Builder.Builder++#elif MIN_VERSION_text(2,0,2)  import qualified Data.Text.Encoding import qualified Data.Text.Lazy
+ src/library/LawfulConversions/Relations/LazyTextBuilderAndUtcTime.hs view
@@ -0,0 +1,14 @@+{-# OPTIONS_GHC -Wno-orphans #-}++module LawfulConversions.Relations.LazyTextBuilderAndUtcTime where++import qualified Data.Text.Lazy.Builder+import Data.Time+import LawfulConversions.Classes+import LawfulConversions.Prelude+import LawfulConversions.Relations.LazyTextBuilderAndString ()+import LawfulConversions.Relations.StringAndUtcTime ()++instance IsSome Data.Text.Lazy.Builder.Builder UTCTime where+  to = fromString . to+  maybeFrom = maybeFrom @String . to
src/library/LawfulConversions/Relations/StrictTextBuilderAndString.hs view
@@ -3,7 +3,21 @@  module LawfulConversions.Relations.StrictTextBuilderAndString where -#if MIN_VERSION_text(2,0,2)+#if MIN_VERSION_text(2,1,2)++import qualified Data.Text.Encoding+import LawfulConversions.Classes+import LawfulConversions.Relations.StringAndText ()+import LawfulConversions.Prelude++instance IsSome String Data.Text.Encoding.StrictTextBuilder where+  to = to . Data.Text.Encoding.strictBuilderToText+  maybeFrom = fmap Data.Text.Encoding.textToStrictBuilder . maybeFrom++instance IsMany String Data.Text.Encoding.StrictTextBuilder where+  from =  Data.Text.Encoding.textToStrictBuilder . from++#elif MIN_VERSION_text(2,0,2)  import qualified Data.Text.Encoding import LawfulConversions.Classes
src/library/LawfulConversions/Relations/StrictTextBuilderAndText.hs view
@@ -3,7 +3,27 @@  module LawfulConversions.Relations.StrictTextBuilderAndText where -#if MIN_VERSION_text(2,0,2)+#if MIN_VERSION_text(2,1,2)++import qualified Data.Text.Encoding+import LawfulConversions.Classes+import LawfulConversions.Prelude++instance IsSome Text Data.Text.Encoding.StrictTextBuilder where+  to = Data.Text.Encoding.strictBuilderToText++instance IsSome Data.Text.Encoding.StrictTextBuilder Text where+  to = Data.Text.Encoding.textToStrictBuilder++instance IsMany Text Data.Text.Encoding.StrictTextBuilder++instance IsMany Data.Text.Encoding.StrictTextBuilder Text++instance Is Text Data.Text.Encoding.StrictTextBuilder++instance Is Data.Text.Encoding.StrictTextBuilder Text++#elif MIN_VERSION_text(2,0,2)  import qualified Data.Text.Encoding import LawfulConversions.Classes
+ src/library/LawfulConversions/Relations/StrictTextBuilderAndUtcTime.hs view
@@ -0,0 +1,34 @@+{-# LANGUAGE CPP #-}+{-# OPTIONS_GHC -Wno-orphans #-}++module LawfulConversions.Relations.StrictTextBuilderAndUtcTime where++#if MIN_VERSION_text(2,1,2)++import qualified Data.Text.Encoding+import Data.Time+import LawfulConversions.Classes+import LawfulConversions.Prelude+import LawfulConversions.Relations.StrictTextBuilderAndString ()+import LawfulConversions.Relations.StringAndText ()+import LawfulConversions.Relations.StringAndUtcTime ()++instance IsSome Data.Text.Encoding.StrictTextBuilder UTCTime where+  to = from . to @String+  maybeFrom = maybeFrom @String . to++#elif MIN_VERSION_text(2,0,2)++import qualified Data.Text.Encoding+import Data.Time+import LawfulConversions.Classes+import LawfulConversions.Prelude+import LawfulConversions.Relations.StrictTextBuilderAndString ()+import LawfulConversions.Relations.StringAndText ()+import LawfulConversions.Relations.StringAndUtcTime ()++instance IsSome Data.Text.Encoding.StrictBuilder UTCTime where+  to = from . to @String+  maybeFrom = maybeFrom @String . to++#endif
src/library/LawfulConversions/Relations/StrictTextBuilderAndUuid.hs view
@@ -3,7 +3,18 @@  module LawfulConversions.Relations.StrictTextBuilderAndUuid where -#if MIN_VERSION_text(2,0,2)+#if MIN_VERSION_text(2,1,2)++import qualified Data.UUID.Types+import qualified Data.Text.Encoding+import LawfulConversions.Classes+import LawfulConversions.Prelude++instance IsSome Data.Text.Encoding.StrictTextBuilder UUID where+  to = Data.Text.Encoding.textToStrictBuilder . Data.UUID.Types.toText+  maybeFrom = Data.UUID.Types.fromText . Data.Text.Encoding.strictBuilderToText++#elif MIN_VERSION_text(2,0,2)  import qualified Data.UUID.Types import qualified Data.Text.Encoding
+ src/library/LawfulConversions/Relations/StringAndUtcTime.hs view
@@ -0,0 +1,12 @@+{-# OPTIONS_GHC -Wno-orphans #-}++module LawfulConversions.Relations.StringAndUtcTime where++import Data.Time+import Data.Time.Format.ISO8601+import LawfulConversions.Classes+import LawfulConversions.Prelude++instance IsSome String UTCTime where+  to = iso8601Show+  maybeFrom = iso8601ParseM
+ src/library/LawfulConversions/Relations/TextAndUtcTime.hs view
@@ -0,0 +1,13 @@+{-# OPTIONS_GHC -Wno-orphans #-}++module LawfulConversions.Relations.TextAndUtcTime where++import Data.Time+import LawfulConversions.Classes+import LawfulConversions.Prelude+import LawfulConversions.Relations.StringAndText ()+import LawfulConversions.Relations.StringAndUtcTime ()++instance IsSome Text UTCTime where+  to = fromString . to+  maybeFrom = maybeFrom @String . to