@@ -25,12 +25,14 @@ module Universum.String.Conversion
25
25
26
26
-- * Show and read functions
27
27
, readEither
28
+ , readMaybe
28
29
, show
29
30
) where
30
31
31
32
import Data.Bifunctor (first )
32
33
import Data.Either (Either )
33
34
import Data.Function (id , (.) )
35
+ import Data.Maybe (Maybe )
34
36
import Data.String (String )
35
37
import qualified Data.Text.Internal as T
36
38
import qualified Data.Text.Internal.Fusion.Common as TF
@@ -47,7 +49,7 @@ import qualified Data.Text.Encoding as T
47
49
import qualified Data.Text.Encoding.Error as T
48
50
import qualified Data.Text.Lazy as LT
49
51
import qualified Data.Text.Lazy.Encoding as LT
50
- import qualified Text.Read (readEither )
52
+ import qualified Text.Read (readEither , readMaybe )
51
53
52
54
import qualified GHC.Show as Show (Show (show ))
53
55
@@ -293,6 +295,15 @@ be safe to collapse.
293
295
readEither :: (ToString a , Read b ) => a -> Either Text b
294
296
readEither = first toText . Text.Read. readEither . toString
295
297
298
+ -- | Polymorhpic version of 'Text.Read.readMaybe'.
299
+ --
300
+ -- >>> readMaybe @Int @Text "123"
301
+ -- Just 123
302
+ -- >>> readMaybe @Int @Text "aa"
303
+ -- Nothing
304
+ readMaybe :: forall b a . (ToString a , Read b ) => a -> Maybe b
305
+ readMaybe = Text.Read. readMaybe . toString
306
+
296
307
-- | Generalized version of 'Prelude.show'.
297
308
show :: forall b a . (Show. Show a , IsString b ) => a -> b
298
309
show x = fromString (Show. show x)
0 commit comments