Copyright | (c) 2016 Stephen Diehl (c) 20016-2018 Serokell (c) 2018 Kowainik |
---|---|
License | MIT |
Maintainer | Kowainik <xrom.xkov@gmail.com> |
Safe Haskell | Safe |
Language | Haskell2010 |
This module implements type class which allow to have conversion to and from
Text
, String
and ByteString
types (including both strict and lazy
versions). Usually you need to export Text
modules qualified and use pack
/ unpack
functions to convert to/from Text
. Now you can just use
toText
/ toString
functions.
Synopsis
- type LText = Text
- type LByteString = ByteString
- class ConvertUtf8 a b where
- encodeUtf8 :: a -> b
- decodeUtf8 :: b -> a
- decodeUtf8Strict :: b -> Either UnicodeException a
- class ToString a where
- class ToLText a where
- class ToText a where
- class LazyStrict l s | l -> s, s -> l where
- fromLazy :: LazyStrict l s => l -> s
- fromStrict :: LazyStrict l s => s -> l
- readEither :: (ToString a, Read b) => a -> Either Text b
- show :: forall b a. (Show a, IsString b) => a -> b
Convenient type aliases
type LByteString = ByteString Source #
Type synonym for ByteString
.
Conversion type classes
class ConvertUtf8 a b where Source #
Type class for conversion to utf8 representation of text.
encodeUtf8 :: a -> b Source #
Encode as utf8 string (usually ByteString
).
>>>
encodeUtf8 @Text @ByteString "патак"
"\208\191\208\176\209\130\208\176\208\186"
decodeUtf8 :: b -> a Source #
Decode from utf8 string.
>>>
decodeUtf8 @Text @ByteString "\208\191\208\176\209\130\208\176\208\186"
"\1087\1072\1090\1072\1082">>>
putTextLn $ decodeUtf8 @Text @ByteString "\208\191\208\176\209\130\208\176\208\186"
патак
decodeUtf8Strict :: b -> Either UnicodeException a Source #
Decode as utf8 string but returning execption if byte sequence is malformed.
>>>
decodeUtf8 @Text @ByteString "\208\208\176\209\130\208\176\208\186"
"\65533\1072\1090\1072\1082"
>>>
decodeUtf8Strict @Text @ByteString "\208\208\176\209\130\208\176\208\186"
Left Cannot decode byte '\xd0': Data.Text.Internal.Encoding.decodeUtf8: Invalid UTF-8 stream
Instances
Type class for converting other strings to Text
.
class LazyStrict l s | l -> s, s -> l where Source #
Type class for lazy-strict conversions.
Instances
LazyStrict LByteString ByteString Source # | |
Defined in Relude.String.Conversion toLazy :: ByteString -> LByteString Source # toStrict :: LByteString -> ByteString Source # | |
LazyStrict LText Text Source # | |
fromLazy :: LazyStrict l s => l -> s Source #
Alias for toStrict
function.
fromStrict :: LazyStrict l s => s -> l Source #
Alias for toLazy
function.
Show and read functions
readEither :: (ToString a, Read b) => a -> Either Text b Source #
Polymorhpic version of readEither
.
>>>
readEither @Text @Int "123"
Right 123>>>
readEither @Text @Int "aa"
Left "Prelude.read: no parse"