witch 1.1.3.0 → 1.1.4.0
raw patch · 4 files changed
+123/−1 lines, 4 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Witch.Encoding: type UTF_32LE = Tagged "UTF-32LE"
+ Witch.Instances: instance Witch.From.From Data.Text.Internal.Lazy.Text (Witch.Encoding.UTF_32LE Data.ByteString.Internal.ByteString)
+ Witch.Instances: instance Witch.From.From Data.Text.Internal.Lazy.Text (Witch.Encoding.UTF_32LE Data.ByteString.Lazy.Internal.ByteString)
+ Witch.Instances: instance Witch.From.From Data.Text.Internal.Text (Witch.Encoding.UTF_32LE Data.ByteString.Internal.ByteString)
+ Witch.Instances: instance Witch.From.From Data.Text.Internal.Text (Witch.Encoding.UTF_32LE Data.ByteString.Lazy.Internal.ByteString)
+ Witch.Instances: instance Witch.From.From GHC.Base.String (Witch.Encoding.UTF_32LE Data.ByteString.Internal.ByteString)
+ Witch.Instances: instance Witch.From.From GHC.Base.String (Witch.Encoding.UTF_32LE Data.ByteString.Lazy.Internal.ByteString)
+ Witch.Instances: instance Witch.TryFrom.TryFrom (Witch.Encoding.UTF_32LE Data.ByteString.Internal.ByteString) Data.Text.Internal.Lazy.Text
+ Witch.Instances: instance Witch.TryFrom.TryFrom (Witch.Encoding.UTF_32LE Data.ByteString.Internal.ByteString) Data.Text.Internal.Text
+ Witch.Instances: instance Witch.TryFrom.TryFrom (Witch.Encoding.UTF_32LE Data.ByteString.Internal.ByteString) GHC.Base.String
+ Witch.Instances: instance Witch.TryFrom.TryFrom (Witch.Encoding.UTF_32LE Data.ByteString.Lazy.Internal.ByteString) Data.Text.Internal.Lazy.Text
+ Witch.Instances: instance Witch.TryFrom.TryFrom (Witch.Encoding.UTF_32LE Data.ByteString.Lazy.Internal.ByteString) Data.Text.Internal.Text
+ Witch.Instances: instance Witch.TryFrom.TryFrom (Witch.Encoding.UTF_32LE Data.ByteString.Lazy.Internal.ByteString) GHC.Base.String
Files
- source/library/Witch/Encoding.hs +3/−0
- source/library/Witch/Instances.hs +50/−0
- source/test-suite/Main.hs +69/−0
- witch.cabal +1/−1
source/library/Witch/Encoding.hs view
@@ -15,3 +15,6 @@ -- | <https://en.wikipedia.org/wiki/UTF-16> type UTF_16BE = Tagged.Tagged "UTF-16BE"++-- | <https://en.wikipedia.org/wiki/UTF-32>+type UTF_32LE = Tagged.Tagged "UTF-32LE"
source/library/Witch/Instances.hs view
@@ -1436,6 +1436,56 @@ instance From.From String (Encoding.UTF_16BE LazyByteString.ByteString) where from = Utility.via @LazyText.Text +-- UTF-32LE++-- | Uses 'Text.decodeUtf32LE'.+instance TryFrom.TryFrom (Encoding.UTF_32LE ByteString.ByteString) Text.Text where+ tryFrom = Utility.eitherTryFrom $ tryEvaluate @Text.UnicodeException . Text.decodeUtf32LE . From.from++-- | Converts via 'Text.Text'.+instance TryFrom.TryFrom (Encoding.UTF_32LE ByteString.ByteString) LazyText.Text where+ tryFrom = Utility.eitherTryFrom $ fmap (Utility.into @LazyText.Text) . Utility.tryInto @Text.Text++-- | Converts via 'Text.Text'.+instance TryFrom.TryFrom (Encoding.UTF_32LE ByteString.ByteString) String where+ tryFrom = Utility.eitherTryFrom $ fmap (Utility.into @String) . Utility.tryInto @Text.Text++-- | Uses 'LazyText.decodeUtf32LE'.+instance TryFrom.TryFrom (Encoding.UTF_32LE LazyByteString.ByteString) LazyText.Text where+ tryFrom = Utility.eitherTryFrom $ tryEvaluate @Text.UnicodeException . LazyText.decodeUtf32LE . From.from++-- | Converts via 'LazyText.Text'.+instance TryFrom.TryFrom (Encoding.UTF_32LE LazyByteString.ByteString) Text.Text where+ tryFrom = Utility.eitherTryFrom $ fmap (Utility.into @Text.Text) . Utility.tryInto @LazyText.Text++-- | Converts via 'LazyText.Text'.+instance TryFrom.TryFrom (Encoding.UTF_32LE LazyByteString.ByteString) String where+ tryFrom = Utility.eitherTryFrom $ fmap (Utility.into @String) . Utility.tryInto @LazyText.Text++-- | Uses 'Text.encodeUtf32LE'.+instance From.From Text.Text (Encoding.UTF_32LE ByteString.ByteString) where+ from = From.from . Text.encodeUtf32LE++-- | Converts via 'ByteString.ByteString'.+instance From.From Text.Text (Encoding.UTF_32LE LazyByteString.ByteString) where+ from = fmap From.from . Utility.into @(Encoding.UTF_32LE ByteString.ByteString)++-- | Uses 'LazyText.encodeUtf32LE'.+instance From.From LazyText.Text (Encoding.UTF_32LE LazyByteString.ByteString) where+ from = From.from . LazyText.encodeUtf32LE++-- | Converts via 'LazyByteString.ByteString'.+instance From.From LazyText.Text (Encoding.UTF_32LE ByteString.ByteString) where+ from = fmap From.from . Utility.into @(Encoding.UTF_32LE LazyByteString.ByteString)++-- | Converts via 'Text.Text'.+instance From.From String (Encoding.UTF_32LE ByteString.ByteString) where+ from = Utility.via @Text.Text++-- | Converts via 'LazyText.Text'.+instance From.From String (Encoding.UTF_32LE LazyByteString.ByteString) where+ from = Utility.via @LazyText.Text+ -- realFloatToRational ::
source/test-suite/Main.hs view
@@ -2300,6 +2300,75 @@ it "works" $ do f "a" `shouldBe` Tagged.Tagged (LazyByteString.pack [0x00, 0x61]) + describe "TryFrom (UTF_32LE ByteString) Text" $ do+ let f = hush . Witch.tryFrom @(Encoding.UTF_32LE ByteString.ByteString) @Text.Text+ it "works" $ do+ f (Tagged.Tagged (ByteString.pack [])) `shouldBe` Just (Text.pack "")+ f (Tagged.Tagged (ByteString.pack [0x24, 0x00, 0x00, 0x00])) `shouldBe` Just (Text.pack "\x24")+ f (Tagged.Tagged (ByteString.pack [0xa3, 0x00, 0x00, 0x00])) `shouldBe` Just (Text.pack "\xa3")+ f (Tagged.Tagged (ByteString.pack [0xac, 0x20, 0x00, 0x00])) `shouldBe` Just (Text.pack "\x20ac")+ f (Tagged.Tagged (ByteString.pack [0x48, 0x03, 0x01, 0x00])) `shouldBe` Just (Text.pack "\x10348")+ f (Tagged.Tagged (ByteString.pack [0x00])) `shouldBe` Nothing++ describe "TryFrom (UTF_32LE ByteString) LazyText" $ do+ let f = hush . Witch.tryFrom @(Encoding.UTF_32LE ByteString.ByteString) @LazyText.Text+ it "works" $ do+ f (Tagged.Tagged (ByteString.pack [0x61, 0x00, 0x00, 0x00])) `shouldBe` Just (LazyText.pack "a")++ describe "TryFrom (UTF_32LE ByteString) String" $ do+ let f = hush . Witch.tryFrom @(Encoding.UTF_32LE ByteString.ByteString) @String+ it "works" $ do+ f (Tagged.Tagged (ByteString.pack [0x61, 0x00, 0x00, 0x00])) `shouldBe` Just "a"++ describe "TryFrom (UTF_32LE LazyByteString) LazyText" $ do+ let f = hush . Witch.tryFrom @(Encoding.UTF_32LE LazyByteString.ByteString) @LazyText.Text+ it "works" $ do+ f (Tagged.Tagged (LazyByteString.pack [0x61, 0x00, 0x00, 0x00])) `shouldBe` Just (LazyText.pack "a")++ describe "TryFrom (UTF_32LE LazyByteString) Text" $ do+ let f = hush . Witch.tryFrom @(Encoding.UTF_32LE LazyByteString.ByteString) @Text.Text+ it "works" $ do+ f (Tagged.Tagged (LazyByteString.pack [0x61, 0x00, 0x00, 0x00])) `shouldBe` Just (Text.pack "a")++ describe "TryFrom (UTF_32LE LazyByteString) String" $ do+ let f = hush . Witch.tryFrom @(Encoding.UTF_32LE LazyByteString.ByteString) @String+ it "works" $ do+ f (Tagged.Tagged (LazyByteString.pack [0x61, 0x00, 0x00, 0x00])) `shouldBe` Just "a"++ describe "From Text (UTF_32LE ByteString)" $ do+ let f = Witch.from @Text.Text @(Encoding.UTF_32LE ByteString.ByteString)+ it "works" $ do+ f (Text.pack "") `shouldBe` Tagged.Tagged (ByteString.pack [])+ f (Text.pack "\x24") `shouldBe` Tagged.Tagged (ByteString.pack [0x24, 0x00, 0x00, 0x00])+ f (Text.pack "\xa3") `shouldBe` Tagged.Tagged (ByteString.pack [0xa3, 0x00, 0x00, 0x00])+ f (Text.pack "\x20ac") `shouldBe` Tagged.Tagged (ByteString.pack [0xac, 0x20, 0x00, 0x00])+ f (Text.pack "\x10348") `shouldBe` Tagged.Tagged (ByteString.pack [0x48, 0x03, 0x01, 0x00])++ describe "From Text (UTF_32LE LazyByteString)" $ do+ let f = Witch.from @Text.Text @(Encoding.UTF_32LE LazyByteString.ByteString)+ it "works" $ do+ f (Text.pack "a") `shouldBe` Tagged.Tagged (LazyByteString.pack [0x61, 0x00, 0x00, 0x00])++ describe "From LazyText (UTF_32LE LazyByteString)" $ do+ let f = Witch.from @LazyText.Text @(Encoding.UTF_32LE LazyByteString.ByteString)+ it "works" $ do+ f (LazyText.pack "a") `shouldBe` Tagged.Tagged (LazyByteString.pack [0x61, 0x00, 0x00, 0x00])++ describe "From LazyText (UTF_32LE ByteString)" $ do+ let f = Witch.from @LazyText.Text @(Encoding.UTF_32LE ByteString.ByteString)+ it "works" $ do+ f (LazyText.pack "a") `shouldBe` Tagged.Tagged (ByteString.pack [0x61, 0x00, 0x00, 0x00])++ describe "From String (UTF_32LE ByteString)" $ do+ let f = Witch.from @String @(Encoding.UTF_32LE ByteString.ByteString)+ it "works" $ do+ f "a" `shouldBe` Tagged.Tagged (ByteString.pack [0x61, 0x00, 0x00, 0x00])++ describe "From String (UTF_32LE LazyByteString)" $ do+ let f = Witch.from @String @(Encoding.UTF_32LE LazyByteString.ByteString)+ it "works" $ do+ f "a" `shouldBe` Tagged.Tagged (LazyByteString.pack [0x61, 0x00, 0x00, 0x00])+ newtype Age = Age Int.Int8 deriving (Eq, Show)
witch.cabal view
@@ -1,7 +1,7 @@ cabal-version: 2.2 name: witch-version: 1.1.3.0+version: 1.1.4.0 synopsis: Convert values from one type into another. description: Witch converts values from one type into another.