universum-1.1.1: Custom prelude used in Serokell

Safe HaskellNone
LanguageHaskell2010

Universum.String.Conversion

Contents

Description

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

Convenient type aliases

type LText = Text #

Type synonym for Text.

type LByteString = ByteString #

Type synonym for ByteString.

Conversion type classes

class ConvertUtf8 a b where #

Type class for conversion to utf8 representation of text.

Minimal complete definition

encodeUtf8, decodeUtf8, decodeUtf8Strict

Methods

encodeUtf8 :: a -> b #

Encode as utf8 string (usually ByteString).

>>> encodeUtf8 @Text @ByteString "патак"
"\208\191\208\176\209\130\208\176\208\186"

decodeUtf8 :: b -> a #

Decode from utf8 string.

>>> decodeUtf8 @Text @ByteString "\208\191\208\176\209\130\208\176\208\186"
"\1087\1072\1090\1072\1082"
>>> putStrLn $ decodeUtf8 @Text @ByteString "\208\191\208\176\209\130\208\176\208\186"
патак

decodeUtf8Strict :: b -> Either UnicodeException a #

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

class ToString a where #

Type class for converting other strings to String.

Minimal complete definition

toString

Methods

toString :: a -> String #

Instances

class ToLText a where #

Type class for converting other strings to Text.

Minimal complete definition

toLText

Methods

toLText :: a -> Text #

Instances

ToLText String # 

Methods

toLText :: String -> Text #

ToLText Text # 

Methods

toLText :: Text -> Text #

ToLText Text # 

Methods

toLText :: Text -> Text #

class ToText a where #

Type class for converting other strings to Text.

Minimal complete definition

toText

Methods

toText :: a -> Text #

Instances

ToText String # 

Methods

toText :: String -> Text #

ToText Text # 

Methods

toText :: Text -> Text #

ToText Text # 

Methods

toText :: Text -> Text #

Show and read functions

readEither :: (ToString a, Read b) => a -> Either Text b #

Polymorhpic version of readEither.

>>> readEither @Text @Int "123"
Right 123
>>> readEither @Text @Int "aa"
Left "Prelude.read: no parse"

show :: forall b a. (Show a, IsString b) => a -> b #

Generalized version of show.

pretty :: Buildable a => a -> Text #

Functions to show pretty output for buildable data types.

prettyL :: Buildable a => a -> LText #

Similar to pretty but for LText.