mirror of
https://github.com/tfausak/witch.git
synced 2024-11-22 14:58:13 +03:00
Rename TryCastException
to TryFromException
This commit is contained in:
parent
57d0695778
commit
1b55654c86
@ -51,7 +51,7 @@ module Witch
|
|||||||
, Witch.Lift.liftedInto
|
, Witch.Lift.liftedInto
|
||||||
|
|
||||||
-- * Data types
|
-- * Data types
|
||||||
, Witch.TryCastException.TryCastException(..)
|
, Witch.TryFromException.TryFromException(..)
|
||||||
|
|
||||||
-- * Notes
|
-- * Notes
|
||||||
|
|
||||||
@ -163,5 +163,5 @@ import qualified Witch.From
|
|||||||
import Witch.Instances ()
|
import Witch.Instances ()
|
||||||
import qualified Witch.Lift
|
import qualified Witch.Lift
|
||||||
import qualified Witch.TryFrom
|
import qualified Witch.TryFrom
|
||||||
import qualified Witch.TryCastException
|
import qualified Witch.TryFromException
|
||||||
import qualified Witch.Utility
|
import qualified Witch.Utility
|
||||||
|
@ -31,7 +31,7 @@ import qualified GHC.Float as Float
|
|||||||
import qualified Numeric.Natural as Natural
|
import qualified Numeric.Natural as Natural
|
||||||
import qualified Witch.From as From
|
import qualified Witch.From as From
|
||||||
import qualified Witch.TryFrom as TryFrom
|
import qualified Witch.TryFrom as TryFrom
|
||||||
import qualified Witch.TryCastException as TryCastException
|
import qualified Witch.TryFromException as TryFromException
|
||||||
import qualified Witch.Utility as Utility
|
import qualified Witch.Utility as Utility
|
||||||
|
|
||||||
-- Int8
|
-- Int8
|
||||||
@ -1073,19 +1073,19 @@ instance From.From LazyText.Text Text.Text where
|
|||||||
instance From.From LazyText.Text LazyByteString.ByteString where
|
instance From.From LazyText.Text LazyByteString.ByteString where
|
||||||
from = LazyText.encodeUtf8
|
from = LazyText.encodeUtf8
|
||||||
|
|
||||||
-- TryCastException
|
-- TryFromException
|
||||||
|
|
||||||
-- | Uses @coerce@.
|
-- | Uses @coerce@.
|
||||||
instance From.From
|
instance From.From
|
||||||
(TryCastException.TryCastException s u)
|
(TryFromException.TryFromException s u)
|
||||||
(TryCastException.TryCastException s t)
|
(TryFromException.TryFromException s t)
|
||||||
|
|
||||||
-- | Uses 'show'.
|
-- | Uses 'show'.
|
||||||
instance
|
instance
|
||||||
( Show s
|
( Show s
|
||||||
, Typeable.Typeable s
|
, Typeable.Typeable s
|
||||||
, Typeable.Typeable t
|
, Typeable.Typeable t
|
||||||
) => From.From (TryCastException.TryCastException s t) String where
|
) => From.From (TryFromException.TryFromException s t) String where
|
||||||
from = show
|
from = show
|
||||||
|
|
||||||
-- | Converts via 'String'.
|
-- | Converts via 'String'.
|
||||||
@ -1093,7 +1093,7 @@ instance
|
|||||||
( Show s
|
( Show s
|
||||||
, Typeable.Typeable s
|
, Typeable.Typeable s
|
||||||
, Typeable.Typeable t
|
, Typeable.Typeable t
|
||||||
) => From.From (TryCastException.TryCastException s t) Text.Text where
|
) => From.From (TryFromException.TryFromException s t) Text.Text where
|
||||||
from = Utility.via @String
|
from = Utility.via @String
|
||||||
|
|
||||||
-- | Converts via 'String'.
|
-- | Converts via 'String'.
|
||||||
@ -1101,7 +1101,7 @@ instance
|
|||||||
( Show s
|
( Show s
|
||||||
, Typeable.Typeable s
|
, Typeable.Typeable s
|
||||||
, Typeable.Typeable t
|
, Typeable.Typeable t
|
||||||
) => From.From (TryCastException.TryCastException s t) LazyText.Text where
|
) => From.From (TryFromException.TryFromException s t) LazyText.Text where
|
||||||
from = Utility.via @String
|
from = Utility.via @String
|
||||||
|
|
||||||
fromNonNegativeIntegral
|
fromNonNegativeIntegral
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
module Witch.TryFrom where
|
module Witch.TryFrom where
|
||||||
|
|
||||||
import qualified Witch.TryCastException as TryCastException
|
import qualified Witch.TryFromException as TryFromException
|
||||||
|
|
||||||
-- | This type class is for converting values from some @source@ type into
|
-- | This type class is for converting values from some @source@ type into
|
||||||
-- some other @target@ type. The constraint @TryFrom source target@ means that
|
-- some other @target@ type. The constraint @TryFrom source target@ means that
|
||||||
@ -18,4 +18,4 @@ class TryFrom source target where
|
|||||||
--
|
--
|
||||||
-- Consider using @maybeTryCast@ or @eitherTryCast@ to implement this
|
-- Consider using @maybeTryCast@ or @eitherTryCast@ to implement this
|
||||||
-- method.
|
-- method.
|
||||||
tryFrom :: source -> Either (TryCastException.TryCastException source target) target
|
tryFrom :: source -> Either (TryFromException.TryFromException source target) target
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{-# LANGUAGE ScopedTypeVariables #-}
|
{-# LANGUAGE ScopedTypeVariables #-}
|
||||||
|
|
||||||
module Witch.TryCastException where
|
module Witch.TryFromException where
|
||||||
|
|
||||||
import qualified Control.Exception as Exception
|
import qualified Control.Exception as Exception
|
||||||
import qualified Data.Proxy as Proxy
|
import qualified Data.Proxy as Proxy
|
||||||
@ -11,7 +11,7 @@ import qualified Data.Typeable as Typeable
|
|||||||
-- type it was trying to convert into. It also has an optional
|
-- type it was trying to convert into. It also has an optional
|
||||||
-- 'Exception.SomeException' for communicating what went wrong while
|
-- 'Exception.SomeException' for communicating what went wrong while
|
||||||
-- converting.
|
-- converting.
|
||||||
data TryCastException source target = TryCastException
|
data TryFromException source target = TryFromException
|
||||||
source
|
source
|
||||||
(Maybe Exception.SomeException)
|
(Maybe Exception.SomeException)
|
||||||
|
|
||||||
@ -19,10 +19,10 @@ instance
|
|||||||
( Show source
|
( Show source
|
||||||
, Typeable.Typeable source
|
, Typeable.Typeable source
|
||||||
, Typeable.Typeable target
|
, Typeable.Typeable target
|
||||||
) => Show (TryCastException source target) where
|
) => Show (TryFromException source target) where
|
||||||
showsPrec d (TryCastException x e) =
|
showsPrec d (TryFromException x e) =
|
||||||
showParen (d > 10)
|
showParen (d > 10)
|
||||||
$ showString "TryCastException @"
|
$ showString "TryFromException @"
|
||||||
. showsPrec 11 (Typeable.typeRep (Proxy.Proxy :: Proxy.Proxy source))
|
. showsPrec 11 (Typeable.typeRep (Proxy.Proxy :: Proxy.Proxy source))
|
||||||
. showString " @"
|
. showString " @"
|
||||||
. showsPrec 11 (Typeable.typeRep (Proxy.Proxy :: Proxy.Proxy target))
|
. showsPrec 11 (Typeable.typeRep (Proxy.Proxy :: Proxy.Proxy target))
|
||||||
@ -35,4 +35,4 @@ instance
|
|||||||
( Show source
|
( Show source
|
||||||
, Typeable.Typeable source
|
, Typeable.Typeable source
|
||||||
, Typeable.Typeable target
|
, Typeable.Typeable target
|
||||||
) => Exception.Exception (TryCastException source target)
|
) => Exception.Exception (TryFromException source target)
|
@ -8,7 +8,7 @@ import qualified Data.Typeable as Typeable
|
|||||||
import qualified GHC.Stack as Stack
|
import qualified GHC.Stack as Stack
|
||||||
import qualified Witch.From as From
|
import qualified Witch.From as From
|
||||||
import qualified Witch.TryFrom as TryFrom
|
import qualified Witch.TryFrom as TryFrom
|
||||||
import qualified Witch.TryCastException as TryCastException
|
import qualified Witch.TryFromException as TryFromException
|
||||||
|
|
||||||
-- | This is the same as 'id' except that it requires a type application. This
|
-- | This is the same as 'id' except that it requires a type application. This
|
||||||
-- can be an ergonomic way to pin down a polymorphic type in a function
|
-- can be an ergonomic way to pin down a polymorphic type in a function
|
||||||
@ -80,7 +80,7 @@ via = From.from . (\x -> x :: through) . From.from
|
|||||||
-- application for the @target@ type.
|
-- application for the @target@ type.
|
||||||
--
|
--
|
||||||
-- > -- Avoid this:
|
-- > -- Avoid this:
|
||||||
-- > tryFrom x :: Either (TryCastException s t) t
|
-- > tryFrom x :: Either (TryFromException s t) t
|
||||||
-- >
|
-- >
|
||||||
-- > -- Prefer this:
|
-- > -- Prefer this:
|
||||||
-- > tryInto @t x
|
-- > tryInto @t x
|
||||||
@ -88,12 +88,12 @@ tryInto
|
|||||||
:: forall target source
|
:: forall target source
|
||||||
. TryFrom.TryFrom source target
|
. TryFrom.TryFrom source target
|
||||||
=> source
|
=> source
|
||||||
-> Either (TryCastException.TryCastException source target) target
|
-> Either (TryFromException.TryFromException source target) target
|
||||||
tryInto = TryFrom.tryFrom
|
tryInto = TryFrom.tryFrom
|
||||||
|
|
||||||
-- | This is similar to 'via' except that it works with 'TryFrom.TryFrom'
|
-- | This is similar to 'via' except that it works with 'TryFrom.TryFrom'
|
||||||
-- instances instead. This function is especially convenient because juggling
|
-- instances instead. This function is especially convenient because juggling
|
||||||
-- the types in the 'TryCastException.TryCastException' can be tedious.
|
-- the types in the 'TryFromException.TryFromException' can be tedious.
|
||||||
--
|
--
|
||||||
-- > -- Avoid this:
|
-- > -- Avoid this:
|
||||||
-- > case tryInto @u x of
|
-- > case tryInto @u x of
|
||||||
@ -110,13 +110,13 @@ tryVia
|
|||||||
, TryFrom.TryFrom through target
|
, TryFrom.TryFrom through target
|
||||||
)
|
)
|
||||||
=> source
|
=> source
|
||||||
-> Either (TryCastException.TryCastException source target) target
|
-> Either (TryFromException.TryFromException source target) target
|
||||||
tryVia s = case TryFrom.tryFrom s of
|
tryVia s = case TryFrom.tryFrom s of
|
||||||
Left (TryCastException.TryCastException _ e) ->
|
Left (TryFromException.TryFromException _ e) ->
|
||||||
Left $ TryCastException.TryCastException s e
|
Left $ TryFromException.TryFromException s e
|
||||||
Right u -> case TryFrom.tryFrom (u :: through) of
|
Right u -> case TryFrom.tryFrom (u :: through) of
|
||||||
Left (TryCastException.TryCastException _ e) ->
|
Left (TryFromException.TryFromException _ e) ->
|
||||||
Left $ TryCastException.TryCastException s e
|
Left $ TryFromException.TryFromException s e
|
||||||
Right t -> Right t
|
Right t -> Right t
|
||||||
|
|
||||||
-- | This function can be used to implement 'TryFrom.tryFrom' with a function
|
-- | This function can be used to implement 'TryFrom.tryFrom' with a function
|
||||||
@ -124,7 +124,7 @@ tryVia s = case TryFrom.tryFrom s of
|
|||||||
--
|
--
|
||||||
-- > -- Avoid this:
|
-- > -- Avoid this:
|
||||||
-- > tryFrom s = case f s of
|
-- > tryFrom s = case f s of
|
||||||
-- > Nothing -> Left $ TryCastException s Nothing
|
-- > Nothing -> Left $ TryFromException s Nothing
|
||||||
-- > Just t -> Right t
|
-- > Just t -> Right t
|
||||||
-- >
|
-- >
|
||||||
-- > -- Prefer this:
|
-- > -- Prefer this:
|
||||||
@ -132,9 +132,9 @@ tryVia s = case TryFrom.tryFrom s of
|
|||||||
maybeTryCast
|
maybeTryCast
|
||||||
:: (source -> Maybe target)
|
:: (source -> Maybe target)
|
||||||
-> source
|
-> source
|
||||||
-> Either (TryCastException.TryCastException source target) target
|
-> Either (TryFromException.TryFromException source target) target
|
||||||
maybeTryCast f s = case f s of
|
maybeTryCast f s = case f s of
|
||||||
Nothing -> Left $ TryCastException.TryCastException s Nothing
|
Nothing -> Left $ TryFromException.TryFromException s Nothing
|
||||||
Just t -> Right t
|
Just t -> Right t
|
||||||
|
|
||||||
-- | This function can be used to implement 'TryFrom.tryFrom' with a function
|
-- | This function can be used to implement 'TryFrom.tryFrom' with a function
|
||||||
@ -142,7 +142,7 @@ maybeTryCast f s = case f s of
|
|||||||
--
|
--
|
||||||
-- > -- Avoid this:
|
-- > -- Avoid this:
|
||||||
-- > tryFrom s = case f s of
|
-- > tryFrom s = case f s of
|
||||||
-- > Left e -> Left . TryCastException s . Just $ toException e
|
-- > Left e -> Left . TryFromException s . Just $ toException e
|
||||||
-- > Right t -> Right t
|
-- > Right t -> Right t
|
||||||
-- >
|
-- >
|
||||||
-- > -- Prefer this:
|
-- > -- Prefer this:
|
||||||
@ -151,10 +151,10 @@ eitherTryCast
|
|||||||
:: Exception.Exception exception
|
:: Exception.Exception exception
|
||||||
=> (source -> Either exception target)
|
=> (source -> Either exception target)
|
||||||
-> source
|
-> source
|
||||||
-> Either (TryCastException.TryCastException source target) target
|
-> Either (TryFromException.TryFromException source target) target
|
||||||
eitherTryCast f s = case f s of
|
eitherTryCast f s = case f s of
|
||||||
Left e ->
|
Left e ->
|
||||||
Left . TryCastException.TryCastException s . Just $ Exception.toException e
|
Left . TryFromException.TryFromException s . Just $ Exception.toException e
|
||||||
Right t -> Right t
|
Right t -> Right t
|
||||||
|
|
||||||
-- | This function is like 'TryFrom.tryFrom' except that it will throw an
|
-- | This function is like 'TryFrom.tryFrom' except that it will throw an
|
||||||
|
@ -1636,23 +1636,23 @@ main = Hspec.hspec . Hspec.describe "Witch" $ do
|
|||||||
test $ f (LazyText.pack "") `Hspec.shouldBe` LazyByteString.pack []
|
test $ f (LazyText.pack "") `Hspec.shouldBe` LazyByteString.pack []
|
||||||
test $ f (LazyText.pack "a") `Hspec.shouldBe` LazyByteString.pack [0x61]
|
test $ f (LazyText.pack "a") `Hspec.shouldBe` LazyByteString.pack [0x61]
|
||||||
|
|
||||||
-- TryCastException
|
-- TryFromException
|
||||||
|
|
||||||
Hspec.describe "From (TryCastException s t0) (TryCastException s t1)" $ do
|
Hspec.describe "From (TryFromException s t0) (TryFromException s t1)" $ do
|
||||||
Hspec.it "needs tests" Hspec.pending
|
Hspec.it "needs tests" Hspec.pending
|
||||||
|
|
||||||
Hspec.describe "From (TryCastException s t) String" $ do
|
Hspec.describe "From (TryFromException s t) String" $ do
|
||||||
test $ Witch.from (Witch.TryCastException Nothing Nothing :: Witch.TryCastException (Maybe Bool) (Maybe Int)) `Hspec.shouldBe` "TryCastException @(Maybe Bool) @(Maybe Int) Nothing Nothing"
|
test $ Witch.from (Witch.TryFromException Nothing Nothing :: Witch.TryFromException (Maybe Bool) (Maybe Int)) `Hspec.shouldBe` "TryFromException @(Maybe Bool) @(Maybe Int) Nothing Nothing"
|
||||||
let f = Witch.from @(Witch.TryCastException Bool Int) @String
|
let f = Witch.from @(Witch.TryFromException Bool Int) @String
|
||||||
test $ f (Witch.TryCastException False Nothing) `Hspec.shouldBe` "TryCastException @Bool @Int False Nothing"
|
test $ f (Witch.TryFromException False Nothing) `Hspec.shouldBe` "TryFromException @Bool @Int False Nothing"
|
||||||
|
|
||||||
Hspec.describe "From (TryCastException s t) Text" $ do
|
Hspec.describe "From (TryFromException s t) Text" $ do
|
||||||
let f = Witch.from @(Witch.TryCastException Bool Int) @Text.Text
|
let f = Witch.from @(Witch.TryFromException Bool Int) @Text.Text
|
||||||
test $ f (Witch.TryCastException False Nothing) `Hspec.shouldBe` Text.pack "TryCastException @Bool @Int False Nothing"
|
test $ f (Witch.TryFromException False Nothing) `Hspec.shouldBe` Text.pack "TryFromException @Bool @Int False Nothing"
|
||||||
|
|
||||||
Hspec.describe "From (TryCastException s t) LazyText" $ do
|
Hspec.describe "From (TryFromException s t) LazyText" $ do
|
||||||
let f = Witch.from @(Witch.TryCastException Bool Int) @LazyText.Text
|
let f = Witch.from @(Witch.TryFromException Bool Int) @LazyText.Text
|
||||||
test $ f (Witch.TryCastException False Nothing) `Hspec.shouldBe` LazyText.pack "TryCastException @Bool @Int False Nothing"
|
test $ f (Witch.TryFromException False Nothing) `Hspec.shouldBe` LazyText.pack "TryFromException @Bool @Int False Nothing"
|
||||||
|
|
||||||
test :: Hspec.Example a => a -> Hspec.SpecWith (Hspec.Arg a)
|
test :: Hspec.Example a => a -> Hspec.SpecWith (Hspec.Arg a)
|
||||||
test = Hspec.it ""
|
test = Hspec.it ""
|
||||||
|
@ -49,8 +49,8 @@ library
|
|||||||
Witch.From
|
Witch.From
|
||||||
Witch.Instances
|
Witch.Instances
|
||||||
Witch.Lift
|
Witch.Lift
|
||||||
Witch.TryCastException
|
|
||||||
Witch.TryFrom
|
Witch.TryFrom
|
||||||
|
Witch.TryFromException
|
||||||
Witch.Utility
|
Witch.Utility
|
||||||
hs-source-dirs: src/lib
|
hs-source-dirs: src/lib
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user