packages feed

witch 0.3.2.3 → 0.3.3.0

raw patch · 3 files changed

+237/−38 lines, 3 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Witch.Instances: instance Witch.From.From Data.Text.Internal.Lazy.Text Data.ByteString.Internal.ByteString
+ Witch.Instances: instance Witch.From.From Data.Text.Internal.Text Data.ByteString.Lazy.Internal.ByteString
+ Witch.Instances: instance Witch.From.From GHC.Base.String Data.ByteString.Internal.ByteString
+ Witch.Instances: instance Witch.From.From GHC.Base.String Data.ByteString.Lazy.Internal.ByteString
+ Witch.Instances: instance Witch.TryFrom.TryFrom Data.ByteString.Internal.ByteString Data.Text.Internal.Lazy.Text
+ Witch.Instances: instance Witch.TryFrom.TryFrom Data.ByteString.Internal.ByteString GHC.Base.String
+ Witch.Instances: instance Witch.TryFrom.TryFrom Data.ByteString.Lazy.Internal.ByteString Data.Text.Internal.Text
+ Witch.Instances: instance Witch.TryFrom.TryFrom Data.ByteString.Lazy.Internal.ByteString GHC.Base.String

Files

src/lib/Witch/Instances.hs view
@@ -1015,6 +1015,14 @@ instance TryFrom.TryFrom ByteString.ByteString Text.Text where   tryFrom = Utility.eitherTryFrom Text.decodeUtf8' +-- | Converts via 'Text.Text'.+instance TryFrom.TryFrom ByteString.ByteString LazyText.Text where+  tryFrom = Utility.eitherTryFrom $ fmap (Utility.into @LazyText.Text) . Utility.tryInto @Text.Text++-- | Converts via 'Text.Text'.+instance TryFrom.TryFrom ByteString.ByteString String where+  tryFrom = Utility.eitherTryFrom $ fmap (Utility.into @String) . Utility.tryInto @Text.Text+ -- LazyByteString  -- | Uses 'LazyByteString.pack'.@@ -1033,6 +1041,14 @@ instance TryFrom.TryFrom LazyByteString.ByteString LazyText.Text where   tryFrom = Utility.eitherTryFrom LazyText.decodeUtf8' +-- | Converts via 'LazyText.Text'.+instance TryFrom.TryFrom LazyByteString.ByteString Text.Text where+  tryFrom = Utility.eitherTryFrom $ fmap (Utility.into @Text.Text) . Utility.tryInto @LazyText.Text++-- | Converts via 'LazyText.Text'.+instance TryFrom.TryFrom LazyByteString.ByteString String where+  tryFrom = Utility.eitherTryFrom $ fmap (Utility.into @String) . Utility.tryInto @LazyText.Text+ -- ShortByteString  -- | Uses 'ShortByteString.pack'.@@ -1049,15 +1065,6 @@  -- Text --- | Uses 'Text.pack'. Some 'Char' values cannot be represented in 'Text.Text'--- and will be replaced with @'\\xFFFD'@.-instance From.From String Text.Text where-  from = Text.pack---- | Uses 'Text.unpack'.-instance From.From Text.Text String where-  from = Text.unpack- -- | Uses 'LazyText.fromStrict'. instance From.From Text.Text LazyText.Text where   from = LazyText.fromStrict@@ -1066,8 +1073,35 @@ instance From.From Text.Text ByteString.ByteString where   from = Text.encodeUtf8 +-- | Converts via 'ByteString.ByteString'.+instance From.From Text.Text LazyByteString.ByteString where+  from = Utility.via @ByteString.ByteString+ -- LazyText +-- | Uses 'LazyText.toStrict'.+instance From.From LazyText.Text Text.Text where+  from = LazyText.toStrict++-- | Uses 'LazyText.encodeUtf8'.+instance From.From LazyText.Text LazyByteString.ByteString where+  from = LazyText.encodeUtf8++-- | Converts via 'LazyByteString.ByteString'.+instance From.From LazyText.Text ByteString.ByteString where+  from = Utility.via @LazyByteString.ByteString++-- String++-- | Uses 'Text.pack'. Some 'Char' values cannot be represented in 'Text.Text'+-- and will be replaced with @'\\xFFFD'@.+instance From.From String Text.Text where+  from = Text.pack++-- | Uses 'Text.unpack'.+instance From.From Text.Text String where+  from = Text.unpack+ -- | Uses 'LazyText.pack'. Some 'Char' values cannot be represented in -- 'LazyText.Text' and will be replaced with @'\\xFFFD'@. instance From.From String LazyText.Text where@@ -1077,13 +1111,13 @@ instance From.From LazyText.Text String where   from = LazyText.unpack --- | Uses 'LazyText.toStrict'.-instance From.From LazyText.Text Text.Text where-  from = LazyText.toStrict+-- | Converts via 'Text.Text'.+instance From.From String ByteString.ByteString where+  from = Utility.via @Text.Text --- | Uses 'LazyText.encodeUtf8'.-instance From.From LazyText.Text LazyByteString.ByteString where-  from = LazyText.encodeUtf8+-- | Converts via 'LazyText.Text'.+instance From.From String LazyByteString.ByteString where+  from = Utility.via @LazyText.Text  -- TryFromException 
src/test/Main.hs view
@@ -92,7 +92,14 @@       ]     ]   , "Instances" ~:-    [ "From Int8 Int16" ~:+    [ "From a a" ~:+      let f = Witch.from @Int @Int in+      [ f 0 ~?= 0+      ]++    -- Int8++    , "From Int8 Int16" ~:       let f = Witch.from @Int.Int8 @Int.Int16 in       [ f 0 ~?= 0       , f 127 ~?= 127@@ -170,6 +177,9 @@       , f 127 ~?= 127       , f (-128) ~?= (-128)       ]++    -- Int16+     , "TryFrom Int16 Int8" ~:       let f = hush . Witch.tryFrom @Int.Int16 @Int.Int8 in       [ f 0 ~?= Just 0@@ -251,7 +261,9 @@       , f 32767 ~?= 32767       , f (-32768) ~?= (-32768)       ]-    ]++    -- Int32+     , "TryFrom Int32 Int8" ~:       let f = hush . Witch.tryFrom @Int.Int32 @Int.Int8 in       [ f 0 ~?= Just 0@@ -338,6 +350,9 @@       , f 2147483647 ~?= 2147483647       , f (-2147483648) ~?= (-2147483648)       ]++    -- Int64+     , "TryFrom Int64 Int8" ~:       let f = hush . Witch.tryFrom @Int.Int64 @Int.Int8 in       [ f 0 ~?= Just 0@@ -434,6 +449,9 @@       , f (-9007199254740991) ~?= Just (-9007199254740991)       , f (-9007199254740992) ~?= Nothing       ]++    -- Int+     , "TryFrom Int Int8" ~:       let f = hush . Witch.tryFrom @Int @Int.Int8 in       [ f 0 ~?= Just 0@@ -541,6 +559,9 @@         then f (-9007199254740992) ~?= Nothing         else f x ~?= Just (fromIntegral x)       ]++    -- Integer+     , "TryFrom Integer Int8" ~:       let f = hush . Witch.tryFrom @Integer @Int.Int8 in       [ f 0 ~?= Just 0@@ -638,6 +659,9 @@       , f (-9007199254740991) ~?= Just (-9007199254740991)       , f (-9007199254740992) ~?= Nothing       ]++    -- Word8+     , "From Word8 Word16" ~:       let f = Witch.from @Word.Word8 @Word.Word16 in       [ f 0 ~?= 0@@ -704,6 +728,9 @@       [ f 0 ~?= 0       , f 255 ~?= 255       ]++    -- Word16+     , "TryFrom Word16 Word8" ~:       let f = hush . Witch.tryFrom @Word.Word16 @Word.Word8 in       [ f 0 ~?= Just 0@@ -772,6 +799,9 @@       [ f 0 ~?= 0       , f 65535 ~?= 65535       ]++    -- Word32+     , "TryFrom Word32 Word8" ~:       let f = hush . Witch.tryFrom @Word.Word32 @Word.Word8 in       [ f 0 ~?= Just 0@@ -845,6 +875,9 @@       [ f 0 ~?= 0       , f 4294967295 ~?= 4294967295       ]++    -- Word64+     , "TryFrom Word64 Word8" ~:       let f = hush . Witch.tryFrom @Word.Word64 @Word.Word8 in       [ f 0 ~?= Just 0@@ -922,6 +955,9 @@       , f 9007199254740991 ~?= Just 9007199254740991       , f 9007199254740992 ~?= Nothing       ]++    -- Word+     , "TryFrom Word Word8" ~:       let f = hush . Witch.tryFrom @Word @Word.Word8 in       [ f 0 ~?= Just 0@@ -1007,6 +1043,9 @@         then f 9007199254740992 ~?= Nothing         else f x ~?= Just (fromIntegral x)       ]++    -- Natural+     , "TryFrom Natural Word8" ~:       let f = hush . Witch.tryFrom @Natural.Natural @Word.Word8 in       [ f 0 ~?= Just 0@@ -1084,6 +1123,9 @@       , f 9007199254740991 ~?= Just 9007199254740991       , f 9007199254740992 ~?= Nothing       ]++    -- Float+     , "TryFrom Float Int8" ~:       let f = hush . Witch.tryFrom @Float @Int.Int8 in       [ f 0 ~?= Just 0@@ -1227,6 +1269,9 @@       , f (1 / 0) ~?= (1 / 0)       , f (-1 / 0) ~?= (-1 / 0)       ]++    -- Double+     , "TryFrom Double Int8" ~:       let f = hush . Witch.tryFrom @Double @Int.Int8 in       [ f 0 ~?= Just 0@@ -1376,6 +1421,9 @@       , f (1 / 0) ~?= (1 / 0)       , f (-1 / 0) ~?= (-1 / 0)       ]++    -- Ratio+     , "From a (Ratio a)" ~:       let f = Witch.from @Int @(Ratio.Ratio Int) in       [ Witch.from @Integer @Rational 0 ~?= 0@@ -1400,6 +1448,9 @@       , f 0.5 ~?= 0.5       , f (-0.5) ~?= (-0.5)       ]++    -- Fixed+     , "From Integer (Fixed a)" ~:       let f = Witch.from @Integer @Fixed.Deci in       [ Witch.from @Integer @Fixed.Uni 1 ~?= 1@@ -1410,6 +1461,9 @@       [ Witch.from @Fixed.Uni @Integer 1 ~?= 1       , f 1 ~?= 10       ]++    -- Complex+     , "From a (Complex a)" ~:       let f = Witch.from @Float @(Complex.Complex Float) in       [ Witch.from @Double @(Complex.Complex Double) 1 ~?= 1@@ -1422,6 +1476,9 @@       , f 1 ~?= Just 1       , f (0 Complex.:+ 1) ~?= Nothing       ]++    -- NonEmpty+     , "TryFrom [a] (NonEmpty a)" ~:       let f = hush . Witch.tryFrom @[Int] @(NonEmpty.NonEmpty Int) in       [ f [] ~?= Nothing@@ -1433,6 +1490,9 @@       [ f (1 NonEmpty.:| []) ~?= [1]       , f (1 NonEmpty.:| [2]) ~?= [1, 2]       ]++    -- Set+     , "From [a] (Set a)" ~:       let f = Witch.from @[Char] @(Set.Set Char) in       [ f [] ~?= Set.fromList []@@ -1446,6 +1506,9 @@       , f (Set.fromList ['a']) ~?= ['a']       , f (Set.fromList ['a', 'b']) ~?= ['a', 'b']       ]++    -- IntSet+     , "From [Int] IntSet" ~:       let f = Witch.from @[Int] @IntSet.IntSet in       [ f [] ~?= IntSet.fromList []@@ -1458,6 +1521,9 @@       , f (IntSet.fromList [1]) ~?= [1]       , f (IntSet.fromList [1, 2]) ~?= [1, 2]       ]++    -- Map+     , "From [(k, v)] (Map k v)" ~:       let f = Witch.from @[(Char, Int)] @(Map.Map Char Int) in       [ f [] ~?= Map.empty@@ -1471,6 +1537,9 @@       , f (Map.fromList [('a', 1)]) ~?= [('a', 1)]       , f (Map.fromList [('a', 1), ('b', 2)]) ~?= [('a', 1), ('b', 2)]       ]++    -- IntMap+     , "From [(Int, v)] (IntMap v)" ~:       let f = Witch.from @[(Int, Char)] @(IntMap.IntMap Char) in       [ f [] ~?= IntMap.fromList []@@ -1484,6 +1553,9 @@       , f (IntMap.fromList [(1, 'a')]) ~?= [(1, 'a')]       , f (IntMap.fromList [(1, 'a'), (2, 'b')]) ~?= [(1, 'a'), (2, 'b')]       ]++    -- Seq+     , "From [a] (Seq a)" ~:       let f = Witch.from @[Int] @(Seq.Seq Int) in       [ f [] ~?= Seq.fromList []@@ -1496,6 +1568,9 @@       , f (Seq.fromList [1]) ~?= [1]       , f (Seq.fromList [1, 2]) ~?= [1, 2]       ]++    -- ByteString+     , "From [Word8] ByteString" ~:       let f = Witch.from @[Word.Word8] @ByteString.ByteString in       [ f [] ~?= ByteString.pack []@@ -1526,6 +1601,21 @@       , f (ByteString.pack [0x61]) ~?= Just (Text.pack "a")       , f (ByteString.pack [0xff]) ~?= Nothing       ]+    , "TryFrom ByteString LazyText" ~:+      let f = hush . Witch.tryFrom @ByteString.ByteString @LazyText.Text in+      [ f (ByteString.pack []) ~?= Just (LazyText.pack "")+      , f (ByteString.pack [0x61]) ~?= Just (LazyText.pack "a")+      , f (ByteString.pack [0xff]) ~?= Nothing+      ]+    , "TryFrom ByteString String" ~:+      let f = hush . Witch.tryFrom @ByteString.ByteString @String in+      [ f (ByteString.pack []) ~?= Just ""+      , f (ByteString.pack [0x61]) ~?= Just "a"+      , f (ByteString.pack [0xff]) ~?= Nothing+      ]++    -- LazyByteString+     , "From [Word8] LazyByteString" ~:       let f = Witch.from @[Word.Word8] @LazyByteString.ByteString in       [ f [] ~?= LazyByteString.pack []@@ -1550,6 +1640,21 @@       , f (LazyByteString.pack [0x61]) ~?= Just (LazyText.pack "a")       , f (LazyByteString.pack [0xff]) ~?= Nothing       ]+    , "TryFrom LazyByteString Text" ~:+      let f = hush . Witch.tryFrom @LazyByteString.ByteString @Text.Text in+      [ f (LazyByteString.pack []) ~?= Just (Text.pack "")+      , f (LazyByteString.pack [0x61]) ~?= Just (Text.pack "a")+      , f (LazyByteString.pack [0xff]) ~?= Nothing+      ]+    , "TryFrom LazyByteString String" ~:+      let f = hush . Witch.tryFrom @LazyByteString.ByteString @String in+      [ f (LazyByteString.pack []) ~?= Just ""+      , f (LazyByteString.pack [0x61]) ~?= Just "a"+      , f (LazyByteString.pack [0xff]) ~?= Nothing+      ]++    -- ShortByteString+     , "From [Word8] ShortByteString" ~:       let f = Witch.from @[Word.Word8] @ShortByteString.ShortByteString in       [ f [] ~?= ShortByteString.pack []@@ -1568,6 +1673,47 @@       , f (ShortByteString.pack [0x00]) ~?= ByteString.pack [0x00]       , f (ShortByteString.pack [0x0f, 0xf0]) ~?= ByteString.pack [0x0f, 0xf0]       ]++    -- Text++    , "From Text LazyText" ~:+      let f = Witch.from @Text.Text @LazyText.Text in+      [ f (Text.pack "") ~?= LazyText.pack ""+      , f (Text.pack "a") ~?= LazyText.pack "a"+      , f (Text.pack "ab") ~?= LazyText.pack "ab"+      ]+    , "From Text ByteString" ~:+      let f = Witch.from @Text.Text @ByteString.ByteString in+      [ f (Text.pack "") ~?= ByteString.pack []+      , f (Text.pack "a") ~?= ByteString.pack [0x61]+      ]+    , "From Text LazyByteString" ~:+      let f = Witch.from @Text.Text @LazyByteString.ByteString in+      [ f (Text.pack "") ~?= LazyByteString.pack []+      , f (Text.pack "a") ~?= LazyByteString.pack [0x61]+      ]++    -- LazyText++    , "From LazyText Text" ~:+      let f = Witch.from @LazyText.Text @Text.Text in+      [ f (LazyText.pack "") ~?= Text.pack ""+      , f (LazyText.pack "a") ~?= Text.pack "a"+      , f (LazyText.pack "ab") ~?= Text.pack "ab"+      ]+    , "From LazyText LazyByteString" ~:+      let f = Witch.from @LazyText.Text @LazyByteString.ByteString in+      [ f (LazyText.pack "") ~?= LazyByteString.pack []+      , f (LazyText.pack "a") ~?= LazyByteString.pack [0x61]+      ]+    , "From LazyText ByteString" ~:+      let f = Witch.from @LazyText.Text @ByteString.ByteString in+      [ f (LazyText.pack "") ~?= ByteString.pack []+      , f (LazyText.pack "a") ~?= ByteString.pack [0x61]+      ]++    -- String+     , "From String Text" ~:       let f = Witch.from @String @Text.Text in       [ f "" ~?= Text.pack ""@@ -1580,17 +1726,6 @@       , f (Text.pack "a") ~?= "a"       , f (Text.pack "ab") ~?= "ab"       ]-    , "From Text LazyText" ~:-      let f = Witch.from @Text.Text @LazyText.Text in-      [ f (Text.pack "") ~?= LazyText.pack ""-      , f (Text.pack "a") ~?= LazyText.pack "a"-      , f (Text.pack "ab") ~?= LazyText.pack "ab"-      ]-    , "From Text ByteString" ~:-      let f = Witch.from @Text.Text @ByteString.ByteString in-      [ f (Text.pack "") ~?= ByteString.pack []-      , f (Text.pack "a") ~?= ByteString.pack [0x61]-      ]     , "From String LazyText" ~:       let f = Witch.from @String @LazyText.Text in       [ f "" ~?= LazyText.pack ""@@ -1603,17 +1738,19 @@       , f (LazyText.pack "a") ~?= "a"       , f (LazyText.pack "ab") ~?= "ab"       ]-    , "From LazyText Text" ~:-      let f = Witch.from @LazyText.Text @Text.Text in-      [ f (LazyText.pack "") ~?= Text.pack ""-      , f (LazyText.pack "a") ~?= Text.pack "a"-      , f (LazyText.pack "ab") ~?= Text.pack "ab"+    , "From String ByteString" ~:+      let f = Witch.from @String @ByteString.ByteString in+      [ f "" ~?= ByteString.pack []+      , f "a" ~?= ByteString.pack [0x61]       ]-    , "From LazyText LazyByteString" ~:-      let f = Witch.from @LazyText.Text @LazyByteString.ByteString in-      [ f (LazyText.pack "") ~?= LazyByteString.pack []-      , f (LazyText.pack "a") ~?= LazyByteString.pack [0x61]+    , "From String LazyByteString" ~:+      let f = Witch.from @String @LazyByteString.ByteString in+      [ f "" ~?= LazyByteString.pack []+      , f "a" ~?= LazyByteString.pack [0x61]       ]++    -- Day+     , "From Integer Day" ~:       let f = Witch.from @Integer @Time.Day in       [ f 0 ~?= Time.ModifiedJulianDay 0@@ -1622,10 +1759,16 @@       let f = Witch.from @Time.Day @Integer in       [ f (Time.ModifiedJulianDay 0) ~?= 0       ]++    -- DayOfWeek+     , "From Day DayOfWeek" ~:       let f = Witch.from @Time.Day @Time.DayOfWeek in       [ f (Time.ModifiedJulianDay 0) ~?= Time.Wednesday       ]++    -- UniversalTime+     , "From Rational UniversalTime" ~:       let f = Witch.from @Rational @Time.UniversalTime in       [ f 0 ~?= Time.ModJulianDate 0@@ -1634,6 +1777,9 @@       let f = Witch.from @Time.UniversalTime @Rational in       [ f (Time.ModJulianDate 0) ~?= 0       ]++    -- DiffTime+     , "From Pico DiffTime" ~:       let f = Witch.from @Fixed.Pico @Time.DiffTime in       [ f 0 ~?= 0@@ -1642,6 +1788,9 @@       let f = Witch.from @Time.DiffTime @Fixed.Pico in       [ f 0 ~?= 0       ]++    -- NominalDiffTime+     , "From Pico NominalDiffTime" ~:       let f = Witch.from @Fixed.Pico @Time.NominalDiffTime in       [ f 0 ~?= 0@@ -1650,6 +1799,9 @@       let f = Witch.from @Time.NominalDiffTime @Fixed.Pico in       [ f 0 ~?= 0       ]++    -- POSIXTime+     , "From SystemTime POSIXTime" ~:       let f = Witch.from @Time.SystemTime @Time.POSIXTime in       [ f (Time.MkSystemTime 0 0) ~?= 0@@ -1662,6 +1814,9 @@       let f = Witch.from @Time.POSIXTime @Time.UTCTime in       [ f 0 ~?= unixEpoch       ]++    -- SystemTime+     , "From UTCTime SystemTime" ~:       let f = Witch.from @Time.UTCTime @Time.SystemTime in       [ f unixEpoch ~?= Time.MkSystemTime 0 0@@ -1674,6 +1829,9 @@       let f = Witch.from @Time.SystemTime @Time.UTCTime in       [ f (Time.MkSystemTime 0 0) ~?= unixEpoch       ]++    -- TimeOfDay+     , "From DiffTime TimeOfDay" ~:       let f = Witch.from @Time.DiffTime @Time.TimeOfDay in       [ f 0 ~?= Time.TimeOfDay 0 0 0@@ -1690,6 +1848,9 @@       let f = Witch.from @Time.TimeOfDay @Rational in       [ f (Time.TimeOfDay 0 0 0) ~?= 0       ]++    -- CalendarDiffTime+     , "From CalendarDiffDays CalendarDiffTime" ~:       let f = Witch.from @Time.CalendarDiffDays @Time.CalendarDiffTime in       [ f (Time.CalendarDiffDays 0 0) ~?= Time.CalendarDiffTime 0 0@@ -1698,10 +1859,14 @@       let f = Witch.from @Time.NominalDiffTime @Time.CalendarDiffTime in       [ f 0 ~?= Time.CalendarDiffTime 0 0       ]++    -- ZonedTime+     , "From ZonedTime UTCTime" ~:       let f = Witch.from @Time.ZonedTime @Time.UTCTime in       [ f (Time.ZonedTime (Time.LocalTime (Time.ModifiedJulianDay 0) (Time.TimeOfDay 0 0 0)) Time.utc) ~?= Time.UTCTime (Time.ModifiedJulianDay 0) 0       ]+    ]   ]  unixEpoch :: Time.UTCTime
witch.cabal view
@@ -1,7 +1,7 @@ cabal-version: 2.2  name: witch-version: 0.3.2.3+version: 0.3.3.0 synopsis: Convert values from one type into another. description: Witch converts values from one type into another.