lawful-conversions 0.3.1 → 0.4.0
raw patch · 28 files changed
+26/−441 lines, 28 filesdep −timedep −uuid-typesPVP ok
version bump matches the API change (PVP)
Dependencies removed: time, uuid-types
API changes (from Hackage documentation)
+ LawfulConversions: tryFrom :: IsSome a b => e -> a -> Either e b
+ LawfulConversions: tryTo :: forall b a e. IsSome a b => e -> a -> Either e b
Files
- CHANGELOG.md +7/−0
- lawful-conversions.cabal +1/−24
- src/library/LawfulConversions.hs +2/−0
- src/library/LawfulConversions/Algebra.hs +15/−0
- src/library/LawfulConversions/Prelude.hs +0/−1
- src/library/LawfulConversions/Relations.hs +0/−21
- src/library/LawfulConversions/Relations/ByteStringAndLazyText.hs +0/−19
- src/library/LawfulConversions/Relations/ByteStringAndString.hs +0/−18
- src/library/LawfulConversions/Relations/ByteStringAndText.hs +0/−17
- src/library/LawfulConversions/Relations/DayAndLazyText.hs +0/−15
- src/library/LawfulConversions/Relations/DayAndLazyTextBuilder.hs +0/−15
- src/library/LawfulConversions/Relations/DayAndStrictTextBuilder.hs +0/−36
- src/library/LawfulConversions/Relations/DayAndString.hs +0/−13
- src/library/LawfulConversions/Relations/DayAndText.hs +0/−14
- src/library/LawfulConversions/Relations/LazyByteStringAndLazyText.hs +0/−19
- src/library/LawfulConversions/Relations/LazyByteStringAndString.hs +0/−19
- src/library/LawfulConversions/Relations/LazyByteStringAndText.hs +0/−20
- src/library/LawfulConversions/Relations/LazyTextAndUtcTime.hs +0/−15
- src/library/LawfulConversions/Relations/LazyTextAndUuid.hs +0/−12
- src/library/LawfulConversions/Relations/LazyTextBuilderAndUtcTime.hs +0/−15
- src/library/LawfulConversions/Relations/LazyTextBuilderAndUuid.hs +0/−13
- src/library/LawfulConversions/Relations/StrictTextBuilderAndUtcTime.hs +0/−36
- src/library/LawfulConversions/Relations/StrictTextBuilderAndUuid.hs +0/−28
- src/library/LawfulConversions/Relations/StringAndUtcTime.hs +0/−13
- src/library/LawfulConversions/Relations/StringAndUuid.hs +0/−11
- src/library/LawfulConversions/Relations/TextAndUtcTime.hs +0/−14
- src/library/LawfulConversions/Relations/TextAndUuid.hs +0/−11
- src/test/Main.hs +1/−22
CHANGELOG.md view
@@ -1,3 +1,10 @@+# v0.4++## Breaking++- Removed interpretation-based relations: UTF-8, ISO-8601, and UUID. + - Relations that depend on a specific encoding or format choice violate the library's principle of unambiguous structural conversion — there is no single canonical way to encode Text as bytes or render a UTCTime as a string.+ # v0.3 ## Breaking
lawful-conversions.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.0 name: lawful-conversions-version: 0.3.1+version: 0.4.0 synopsis: Lawful typeclasses for bidirectional conversion between types category: Conversion homepage: https://github.com/nikita-volkov/lawful-conversions@@ -103,17 +103,9 @@ LawfulConversions.Relations.ByteArrayAndWord8List LawfulConversions.Relations.ByteStringAndLazyByteString LawfulConversions.Relations.ByteStringAndLazyByteStringBuilder- LawfulConversions.Relations.ByteStringAndLazyText LawfulConversions.Relations.ByteStringAndShortByteString- LawfulConversions.Relations.ByteStringAndString- LawfulConversions.Relations.ByteStringAndText LawfulConversions.Relations.ByteStringAndTextArray LawfulConversions.Relations.ByteStringAndWord8List- LawfulConversions.Relations.DayAndLazyText- LawfulConversions.Relations.DayAndLazyTextBuilder- LawfulConversions.Relations.DayAndStrictTextBuilder- LawfulConversions.Relations.DayAndString- LawfulConversions.Relations.DayAndText LawfulConversions.Relations.Int16AndWord16 LawfulConversions.Relations.Int32AndWord32 LawfulConversions.Relations.Int64AndWord64@@ -122,10 +114,7 @@ LawfulConversions.Relations.IntMapAndMapOfInt LawfulConversions.Relations.IntSetAndSetOfInt LawfulConversions.Relations.LazyByteStringAndLazyByteStringBuilder- LawfulConversions.Relations.LazyByteStringAndLazyText LawfulConversions.Relations.LazyByteStringAndShortByteString- LawfulConversions.Relations.LazyByteStringAndString- LawfulConversions.Relations.LazyByteStringAndText LawfulConversions.Relations.LazyByteStringAndTextArray LawfulConversions.Relations.LazyByteStringAndWord8List LawfulConversions.Relations.LazyByteStringBuilderAndShortByteString@@ -135,25 +124,15 @@ 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.Relations.Void LawfulConversions.TextCompat.Array@@ -167,9 +146,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, test-suite test
src/library/LawfulConversions.hs view
@@ -83,6 +83,8 @@ -- * Combinators from, maybeTo,+ tryFrom,+ tryTo, onto, -- * Optics
src/library/LawfulConversions/Algebra.hs view
@@ -79,6 +79,21 @@ maybeTo = maybeFrom -- |+-- Like 'maybeFrom', but returns an 'Either' with the provided error on failure.+--+-- Useful for raising custom errors when conversion fails.+tryFrom :: (IsSome a b) => e -> a -> Either e b+tryFrom err a =+ case maybeFrom a of+ Just b -> Right b+ Nothing -> Left err++-- |+-- Alias to 'tryFrom', which lets you specify the target type of the conversion first using @TypeApplications@.+tryTo :: forall b a e. (IsSome a b) => e -> a -> Either e b+tryTo = tryFrom++-- | -- Lossy or canonicalizing conversion. -- Captures mappings from multiple alternative inputs into one output. --
src/library/LawfulConversions/Prelude.hs view
@@ -55,7 +55,6 @@ import Data.Text as Exports (Text) import Data.Traversable as Exports import Data.Tuple as Exports-import Data.UUID.Types as Exports (UUID) import Data.Vector as Exports (Vector) import Data.Version as Exports import Data.Void as Exports
src/library/LawfulConversions/Relations.hs view
@@ -11,17 +11,9 @@ import LawfulConversions.Relations.ByteArrayAndWord8List () import LawfulConversions.Relations.ByteStringAndLazyByteString () import LawfulConversions.Relations.ByteStringAndLazyByteStringBuilder ()-import LawfulConversions.Relations.ByteStringAndLazyText () import LawfulConversions.Relations.ByteStringAndShortByteString ()-import LawfulConversions.Relations.ByteStringAndString ()-import LawfulConversions.Relations.ByteStringAndText () import LawfulConversions.Relations.ByteStringAndTextArray () import LawfulConversions.Relations.ByteStringAndWord8List ()-import LawfulConversions.Relations.DayAndLazyText ()-import LawfulConversions.Relations.DayAndLazyTextBuilder ()-import LawfulConversions.Relations.DayAndStrictTextBuilder ()-import LawfulConversions.Relations.DayAndString ()-import LawfulConversions.Relations.DayAndText () import LawfulConversions.Relations.Int16AndWord16 () import LawfulConversions.Relations.Int32AndWord32 () import LawfulConversions.Relations.Int64AndWord64 ()@@ -30,10 +22,7 @@ import LawfulConversions.Relations.IntMapAndMapOfInt () import LawfulConversions.Relations.IntSetAndSetOfInt () import LawfulConversions.Relations.LazyByteStringAndLazyByteStringBuilder ()-import LawfulConversions.Relations.LazyByteStringAndLazyText () import LawfulConversions.Relations.LazyByteStringAndShortByteString ()-import LawfulConversions.Relations.LazyByteStringAndString ()-import LawfulConversions.Relations.LazyByteStringAndText () import LawfulConversions.Relations.LazyByteStringAndTextArray () import LawfulConversions.Relations.LazyByteStringAndWord8List () import LawfulConversions.Relations.LazyByteStringBuilderAndShortByteString ()@@ -43,24 +32,14 @@ import LawfulConversions.Relations.LazyTextAndStrictTextBuilder () import LawfulConversions.Relations.LazyTextAndString () import LawfulConversions.Relations.LazyTextAndText ()-import LawfulConversions.Relations.LazyTextAndUtcTime ()-import LawfulConversions.Relations.LazyTextAndUuid () import LawfulConversions.Relations.LazyTextBuilderAndStrictTextBuilder () import LawfulConversions.Relations.LazyTextBuilderAndString () import LawfulConversions.Relations.LazyTextBuilderAndText ()-import LawfulConversions.Relations.LazyTextBuilderAndUtcTime ()-import LawfulConversions.Relations.LazyTextBuilderAndUuid () import LawfulConversions.Relations.ListAndSeq () import LawfulConversions.Relations.ShortByteStringAndTextArray () import LawfulConversions.Relations.ShortByteStringAndWord8List () import LawfulConversions.Relations.StrictTextBuilderAndString () import LawfulConversions.Relations.StrictTextBuilderAndText ()-import LawfulConversions.Relations.StrictTextBuilderAndUtcTime ()-import LawfulConversions.Relations.StrictTextBuilderAndUuid () import LawfulConversions.Relations.StringAndText ()-import LawfulConversions.Relations.StringAndUtcTime ()-import LawfulConversions.Relations.StringAndUuid ()-import LawfulConversions.Relations.TextAndUtcTime ()-import LawfulConversions.Relations.TextAndUuid () import LawfulConversions.Relations.TextArrayAndWord8List () import LawfulConversions.Relations.Void ()
− src/library/LawfulConversions/Relations/ByteStringAndLazyText.hs
@@ -1,19 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.ByteStringAndLazyText where--import qualified Data.ByteString.Lazy-import qualified Data.Text.Encoding.Error-import qualified Data.Text.Lazy-import qualified Data.Text.Lazy.Encoding-import LawfulConversions.Algebra-import LawfulConversions.Prelude---- | UTF-8 codec.-instance IsSome ByteString Data.Text.Lazy.Text where- to = Data.ByteString.Lazy.toStrict . Data.Text.Lazy.Encoding.encodeUtf8- maybeFrom = either (const Nothing) Just . Data.Text.Lazy.Encoding.decodeUtf8' . Data.ByteString.Lazy.fromStrict---- | Lenient UTF-8 decoding.-instance IsMany ByteString Data.Text.Lazy.Text where- onfrom = Data.Text.Lazy.Encoding.decodeUtf8With Data.Text.Encoding.Error.lenientDecode . Data.ByteString.Lazy.fromStrict
− src/library/LawfulConversions/Relations/ByteStringAndString.hs
@@ -1,18 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.ByteStringAndString where--import qualified Data.Text-import qualified Data.Text.Encoding-import qualified Data.Text.Encoding.Error-import LawfulConversions.Algebra-import LawfulConversions.Prelude---- | UTF-8 codec.-instance IsSome ByteString String where- to = Data.Text.Encoding.encodeUtf8 . Data.Text.pack- maybeFrom = either (const Nothing) (Just . Data.Text.unpack) . Data.Text.Encoding.decodeUtf8'---- | Lenient UTF-8 decoding.-instance IsMany ByteString String where- onfrom = Data.Text.unpack . Data.Text.Encoding.decodeUtf8With Data.Text.Encoding.Error.lenientDecode
− src/library/LawfulConversions/Relations/ByteStringAndText.hs
@@ -1,17 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.ByteStringAndText where--import qualified Data.Text.Encoding-import qualified Data.Text.Encoding.Error-import LawfulConversions.Algebra-import LawfulConversions.Prelude---- | UTF-8 codec.-instance IsSome ByteString Text where- to = Data.Text.Encoding.encodeUtf8- maybeFrom = either (const Nothing) Just . Data.Text.Encoding.decodeUtf8'---- | Lenient UTF-8 decoding.-instance IsMany ByteString Text where- onfrom = Data.Text.Encoding.decodeUtf8With Data.Text.Encoding.Error.lenientDecode
− src/library/LawfulConversions/Relations/DayAndLazyText.hs
@@ -1,15 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.DayAndLazyText where--import qualified Data.Text.Lazy-import Data.Time-import LawfulConversions.Algebra-import LawfulConversions.Prelude-import LawfulConversions.Relations.DayAndString ()-import LawfulConversions.Relations.LazyTextAndString ()---- | Implements ISO-8601.-instance IsSome Data.Text.Lazy.Text Day where- to = fromString . to- maybeFrom = maybeFrom @String . to
− src/library/LawfulConversions/Relations/DayAndLazyTextBuilder.hs
@@ -1,15 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.DayAndLazyTextBuilder where--import qualified Data.Text.Lazy.Builder-import Data.Time-import LawfulConversions.Algebra-import LawfulConversions.Prelude-import LawfulConversions.Relations.DayAndString ()-import LawfulConversions.Relations.LazyTextBuilderAndString ()---- | Implements ISO-8601.-instance IsSome Data.Text.Lazy.Builder.Builder Day where- to = fromString . to- maybeFrom = maybeFrom @String . to
− src/library/LawfulConversions/Relations/DayAndStrictTextBuilder.hs
@@ -1,36 +0,0 @@-{-# LANGUAGE CPP #-}-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.DayAndStrictTextBuilder where--#if MIN_VERSION_text(2,1,2)--import qualified Data.Text.Encoding-import Data.Time-import LawfulConversions.Algebra-import LawfulConversions.Prelude-import LawfulConversions.Relations.StrictTextBuilderAndString ()-import LawfulConversions.Relations.StringAndText ()-import LawfulConversions.Relations.DayAndString ()---- | Implements ISO-8601.-instance IsSome Data.Text.Encoding.StrictTextBuilder Day where- to = onfrom . to @String- maybeFrom = maybeFrom @String . to--#elif MIN_VERSION_text(2,0,2)--import qualified Data.Text.Encoding-import Data.Time-import LawfulConversions.Algebra-import LawfulConversions.Prelude-import LawfulConversions.Relations.StrictTextBuilderAndString ()-import LawfulConversions.Relations.StringAndText ()-import LawfulConversions.Relations.DayAndString ()---- | Implements ISO-8601.-instance IsSome Data.Text.Encoding.StrictBuilder Day where- to = onfrom . to @String- maybeFrom = maybeFrom @String . to--#endif
− src/library/LawfulConversions/Relations/DayAndString.hs
@@ -1,13 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.DayAndString where--import Data.Time-import Data.Time.Format.ISO8601-import LawfulConversions.Algebra-import LawfulConversions.Prelude---- | Implements ISO-8601.-instance IsSome String Day where- to = iso8601Show- maybeFrom = iso8601ParseM
− src/library/LawfulConversions/Relations/DayAndText.hs
@@ -1,14 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.DayAndText where--import Data.Time-import LawfulConversions.Algebra-import LawfulConversions.Prelude-import LawfulConversions.Relations.DayAndString ()-import LawfulConversions.Relations.StringAndText ()---- | Implements ISO-8601.-instance IsSome Text Day where- to = fromString . to- maybeFrom = maybeFrom @String . to
− src/library/LawfulConversions/Relations/LazyByteStringAndLazyText.hs
@@ -1,19 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.LazyByteStringAndLazyText where--import qualified Data.ByteString.Lazy-import qualified Data.Text.Encoding.Error-import qualified Data.Text.Lazy-import qualified Data.Text.Lazy.Encoding-import LawfulConversions.Algebra-import LawfulConversions.Prelude---- | UTF-8 codec.-instance IsSome Data.ByteString.Lazy.ByteString Data.Text.Lazy.Text where- to = Data.Text.Lazy.Encoding.encodeUtf8- maybeFrom = either (const Nothing) Just . Data.Text.Lazy.Encoding.decodeUtf8'---- | Lenient UTF-8 decoding.-instance IsMany Data.ByteString.Lazy.ByteString Data.Text.Lazy.Text where- onfrom = Data.Text.Lazy.Encoding.decodeUtf8With Data.Text.Encoding.Error.lenientDecode
− src/library/LawfulConversions/Relations/LazyByteStringAndString.hs
@@ -1,19 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.LazyByteStringAndString where--import qualified Data.ByteString.Lazy-import qualified Data.Text.Encoding.Error-import qualified Data.Text.Lazy-import qualified Data.Text.Lazy.Encoding-import LawfulConversions.Algebra-import LawfulConversions.Prelude---- | UTF-8 codec.-instance IsSome Data.ByteString.Lazy.ByteString String where- to = Data.Text.Lazy.Encoding.encodeUtf8 . Data.Text.Lazy.pack- maybeFrom = either (const Nothing) (Just . Data.Text.Lazy.unpack) . Data.Text.Lazy.Encoding.decodeUtf8'---- | Lenient UTF-8 decoding.-instance IsMany Data.ByteString.Lazy.ByteString String where- onfrom = Data.Text.Lazy.unpack . Data.Text.Lazy.Encoding.decodeUtf8With Data.Text.Encoding.Error.lenientDecode
− src/library/LawfulConversions/Relations/LazyByteStringAndText.hs
@@ -1,20 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.LazyByteStringAndText where--import qualified Data.ByteString.Lazy-import qualified Data.Text-import qualified Data.Text.Encoding.Error-import qualified Data.Text.Lazy-import qualified Data.Text.Lazy.Encoding-import LawfulConversions.Algebra-import LawfulConversions.Prelude---- | UTF-8 codec.-instance IsSome Data.ByteString.Lazy.ByteString Data.Text.Text where- to = Data.Text.Lazy.Encoding.encodeUtf8 . Data.Text.Lazy.fromStrict- maybeFrom = either (const Nothing) (Just . Data.Text.Lazy.toStrict) . Data.Text.Lazy.Encoding.decodeUtf8'---- | Lenient UTF-8 decoding.-instance IsMany Data.ByteString.Lazy.ByteString Data.Text.Text where- onfrom = Data.Text.Lazy.toStrict . Data.Text.Lazy.Encoding.decodeUtf8With Data.Text.Encoding.Error.lenientDecode
− src/library/LawfulConversions/Relations/LazyTextAndUtcTime.hs
@@ -1,15 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.LazyTextAndUtcTime where--import qualified Data.Text.Lazy-import Data.Time-import LawfulConversions.Algebra-import LawfulConversions.Prelude-import LawfulConversions.Relations.LazyTextAndString ()-import LawfulConversions.Relations.StringAndUtcTime ()---- | Implements ISO-8601.-instance IsSome Data.Text.Lazy.Text UTCTime where- to = fromString . to- maybeFrom = maybeFrom @String . to
− src/library/LawfulConversions/Relations/LazyTextAndUuid.hs
@@ -1,12 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.LazyTextAndUuid where--import qualified Data.Text.Lazy-import qualified Data.UUID.Types-import LawfulConversions.Algebra-import LawfulConversions.Prelude--instance IsSome Data.Text.Lazy.Text UUID where- to = Data.Text.Lazy.fromStrict . Data.UUID.Types.toText- maybeFrom = Data.UUID.Types.fromText . Data.Text.Lazy.toStrict
− src/library/LawfulConversions/Relations/LazyTextBuilderAndUtcTime.hs
@@ -1,15 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.LazyTextBuilderAndUtcTime where--import qualified Data.Text.Lazy.Builder-import Data.Time-import LawfulConversions.Algebra-import LawfulConversions.Prelude-import LawfulConversions.Relations.LazyTextBuilderAndString ()-import LawfulConversions.Relations.StringAndUtcTime ()---- | Implements ISO-8601.-instance IsSome Data.Text.Lazy.Builder.Builder UTCTime where- to = fromString . to- maybeFrom = maybeFrom @String . to
− src/library/LawfulConversions/Relations/LazyTextBuilderAndUuid.hs
@@ -1,13 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.LazyTextBuilderAndUuid where--import qualified Data.Text.Lazy-import qualified Data.Text.Lazy.Builder-import qualified Data.UUID.Types-import LawfulConversions.Algebra-import LawfulConversions.Prelude--instance IsSome Data.Text.Lazy.Builder.Builder UUID where- to = Data.Text.Lazy.Builder.fromText . Data.UUID.Types.toText- maybeFrom = Data.UUID.Types.fromText . Data.Text.Lazy.toStrict . Data.Text.Lazy.Builder.toLazyText
− src/library/LawfulConversions/Relations/StrictTextBuilderAndUtcTime.hs
@@ -1,36 +0,0 @@-{-# 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.Algebra-import LawfulConversions.Prelude-import LawfulConversions.Relations.StrictTextBuilderAndString ()-import LawfulConversions.Relations.StringAndText ()-import LawfulConversions.Relations.StringAndUtcTime ()---- | Implements ISO-8601.-instance IsSome Data.Text.Encoding.StrictTextBuilder UTCTime where- to = onfrom . to @String- maybeFrom = maybeFrom @String . to--#elif MIN_VERSION_text(2,0,2)--import qualified Data.Text.Encoding-import Data.Time-import LawfulConversions.Algebra-import LawfulConversions.Prelude-import LawfulConversions.Relations.StrictTextBuilderAndString ()-import LawfulConversions.Relations.StringAndText ()-import LawfulConversions.Relations.StringAndUtcTime ()---- | Implements ISO-8601.-instance IsSome Data.Text.Encoding.StrictBuilder UTCTime where- to = onfrom . to @String- maybeFrom = maybeFrom @String . to--#endif
− src/library/LawfulConversions/Relations/StrictTextBuilderAndUuid.hs
@@ -1,28 +0,0 @@-{-# LANGUAGE CPP #-}-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.StrictTextBuilderAndUuid where--#if MIN_VERSION_text(2,1,2)--import qualified Data.UUID.Types-import qualified Data.Text.Encoding-import LawfulConversions.Algebra-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-import LawfulConversions.Algebra-import LawfulConversions.Prelude--instance IsSome Data.Text.Encoding.StrictBuilder UUID where- to = Data.Text.Encoding.textToStrictBuilder . Data.UUID.Types.toText- maybeFrom = Data.UUID.Types.fromText . Data.Text.Encoding.strictBuilderToText--#endif
− src/library/LawfulConversions/Relations/StringAndUtcTime.hs
@@ -1,13 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.StringAndUtcTime where--import Data.Time-import Data.Time.Format.ISO8601-import LawfulConversions.Algebra-import LawfulConversions.Prelude---- | Implements ISO-8601.-instance IsSome String UTCTime where- to = iso8601Show- maybeFrom = iso8601ParseM
− src/library/LawfulConversions/Relations/StringAndUuid.hs
@@ -1,11 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.StringAndUuid where--import qualified Data.UUID.Types-import LawfulConversions.Algebra-import LawfulConversions.Prelude--instance IsSome String UUID where- to = Data.UUID.Types.toString- maybeFrom = Data.UUID.Types.fromString
− src/library/LawfulConversions/Relations/TextAndUtcTime.hs
@@ -1,14 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.TextAndUtcTime where--import Data.Time-import LawfulConversions.Algebra-import LawfulConversions.Prelude-import LawfulConversions.Relations.StringAndText ()-import LawfulConversions.Relations.StringAndUtcTime ()---- | Implements ISO-8601.-instance IsSome Text UTCTime where- to = fromString . to- maybeFrom = maybeFrom @String . to
− src/library/LawfulConversions/Relations/TextAndUuid.hs
@@ -1,11 +0,0 @@-{-# OPTIONS_GHC -Wno-orphans #-}--module LawfulConversions.Relations.TextAndUuid where--import qualified Data.UUID.Types as Uuid-import LawfulConversions.Algebra-import LawfulConversions.Prelude--instance IsSome Text UUID where- to = Uuid.toText- maybeFrom = Uuid.fromText
src/test/Main.hs view
@@ -110,33 +110,12 @@ testIs @Word64 @Int64 Proxy Proxy, testIs @Word64 @Word64 Proxy Proxy, testIs @Word8 @Int8 Proxy Proxy,- testIs @Word8 @Word8 Proxy Proxy,- testIsSome @Data.Text.Lazy.Text @UTCTime Proxy Proxy,- testIsSome @Data.Text.Lazy.Builder.Builder @UTCTime Proxy Proxy,- testIsSome @String @UTCTime Proxy Proxy,- testIsSome @Text @UTCTime Proxy Proxy,- testIsSome @Data.Text.Lazy.Text @Day Proxy Proxy,- testIsSome @Data.Text.Lazy.Builder.Builder @Day Proxy Proxy,- testIsSome @String @Day Proxy Proxy,- testIsSome @Text @Day Proxy Proxy+ testIs @Word8 @Word8 Proxy Proxy ] testIs :: (Is a b, Eq a, Eq b, Arbitrary a, Show a, Arbitrary b, Show b, Typeable a, Typeable b) => Proxy a -> Proxy b -> TestTree testIs superp subp = isProperties superp subp- & fmap (uncurry testProperty)- & testGroup groupName- where- groupName =- mconcat- [ show (typeOf (asProxyTypeOf undefined superp)),- "/",- show (typeOf (asProxyTypeOf undefined subp))- ]--testIsSome :: (IsSome a b, Eq a, Eq b, Arbitrary a, Show a, Arbitrary b, Show b, Typeable a, Typeable b) => Proxy a -> Proxy b -> TestTree-testIsSome superp subp =- isSomeProperties superp subp & fmap (uncurry testProperty) & testGroup groupName where