-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Fast RFC 4648-compliant Base16 encoding -- -- RFC 4648-compliant Base16 encodings and decodings. This library -- provides performant encoding and decoding primitives, as well as -- support for textual values. @package base16 @version 1.0 -- | This module contains the Base16 type definition, -- Alphabet datatype, alphabet constraints, and various quality -- of life combinators for working with Base16-wrapped data. module Data.Base16.Types -- | Wraps a value, asserting that it is or is intended to be in a -- particular kind of Base16 encoding use extractBase16 to -- extract the value, and assertBase16 to tag a value as -- base16-encoded data Base16 a -- | Assert the provenance of a value. -- -- Warning: This is a blind assertion that a particular value is -- base16 encoded in some alphabet. If you are not sure of the provenance -- of the value, you may experience odd behavior when attempting to -- decode. Use at your own risk. If I see any issues logged on this -- project from negligent use of this, Sofia and I will smite you. assertBase16 :: a -> Base16 a -- | Forget that a particular value is Base16-encoded extractBase16 :: Base16 a -> a -- | This module contains ByteString-valued combinators for -- implementing the RFC 4648 specification of the Base16 encoding format. -- This includes lenient decoding variants, as well as internal and -- external validation for canonicity. module Data.ByteString.Base16 -- | Encode a ByteString value as Base16 Text -- -- See: RFC-4648 section 8 -- --

Examples:

-- --
--   >>> encodeBase16 "Sun"
--   "53756e"
--   
encodeBase16 :: ByteString -> Base16 Text -- | Encode a ByteString value as a Base16 ByteString value -- -- See: RFC-4648 section 8 -- --

Examples:

-- --
--   >>> encodeBase16' "Sun"
--   "53756e"
--   
encodeBase16' :: ByteString -> Base16 ByteString -- | Decode a Base16-encoded ByteString value. -- -- See: RFC-4648 section 8 -- --

Examples:

-- --
--   >>> decodeBase16 $ assertBase16 "53756e"
--   "Sun"
--   
decodeBase16 :: Base16 ByteString -> ByteString -- | Decode Base16 Text. -- -- See: RFC-4648 section 8 -- --

Examples:

-- --
--   >>> decodeBase16' $ assertBase16 "53756e"
--   "Sun"
--   
decodeBase16' :: Base16 Text -> ByteString -- | Decode an untyped Base16-encoded ByteString value with -- error-checking. -- -- See: RFC-4648 section 8 -- --

Examples:

-- --
--   >>> decodeBase16Untyped "53756e"
--   Right "Sun"
--   
-- --
--   >>> decodeBase16Untyped "6x"
--   Left "invalid character at offset: 1"
--   
decodeBase16Untyped :: ByteString -> Either Text ByteString -- | Decode a Base16-encoded ByteString value leniently, using a -- strategy that never fails -- -- N.B.: this is not RFC 4648-compliant -- --

Examples:

-- --
--   >>> decodeBase16Lenient "53756e"
--   "Sun"
--   
-- --
--   >>> decodeBase16Lenient "6x6x"
--   "f"
--   
decodeBase16Lenient :: ByteString -> ByteString -- | Tell whether an untyped ByteString value is base16 encoded. -- --

Examples:

-- --
--   >>> isBase16 "666f6"
--   False
--   
-- --
--   >>> isBase16 "666f"
--   True
--   
isBase16 :: ByteString -> Bool -- | Tell whether an untyped ByteString value is a valid Base16 -- format. -- -- This will not tell you whether or not this is a correct Base16 -- representation, only that it conforms to the correct alphabet. To -- check whether it is a true Base16 encoded ByteString value, use -- isBase16. -- --

Examples:

-- --
--   >>> isValidBase16 "666f+/6"
--   False
--   
-- --
--   >>> isValidBase16 "666f6"
--   True
--   
isValidBase16 :: ByteString -> Bool -- | This module contains ByteString-valued combinators for -- implementing the RFC 4648 specification of the Base16 encoding format. -- This includes lenient decoding variants, as well as internal and -- external validation for canonicity. module Data.ByteString.Lazy.Base16 -- | Encode a lazy ByteString value as Base16 Text -- -- See: RFC-4648 section 8 -- --

Examples:

-- --
--   >>> encodeBase16 "Sun"
--   "53756e"
--   
encodeBase16 :: ByteString -> Base16 Text -- | Encode a lazy ByteString value as a Base16 ByteString -- value -- -- See: RFC-4648 section 8 -- --

Examples:

-- --
--   >>> encodeBase16' "Sun"
--   "53756e"
--   
encodeBase16' :: ByteString -> Base16 ByteString -- | Decode a Base16-encoded lazy ByteString value. -- -- See: RFC-4648 section 8 -- --

Examples:

-- --
--   >>> decodeBase16 $ assertBase16 "53756e"
--   "Sun"
--   
decodeBase16 :: Base16 ByteString -> ByteString -- | Decode a Base16-encoded Text value. -- -- See: RFC-4648 section 8 -- --

Examples:

-- --
--   >>> decodeBase16' $ assertBase16 "53756e"
--   "Sun"
--   
decodeBase16' :: Base16 Text -> ByteString -- | Decode an untyped Base16-encoded lazy ByteString value. -- -- See: RFC-4648 section 8 -- --

Examples:

-- --
--   >>> decodeBase16Untyped "53756e"
--   Right "Sun"
--   
-- --
--   >>> decodeBase16Untyped "6x"
--   Left "invalid character at offset: 1"
--   
decodeBase16Untyped :: ByteString -> Either Text ByteString -- | Decode an untyped Base16-encoded ByteString value leniently, -- using a strategy that never fails -- -- N.B.: this is not RFC 4648-compliant. It may give you garbage if -- you're not careful! -- --

Examples:

-- --
--   >>> decodeBase16Lenient "53756e"
--   "Sun"
--   
-- --
--   >>> decodeBase16Lenient "6x6x"
--   "f"
--   
decodeBase16Lenient :: ByteString -> ByteString -- | Tell whether an untyped lazy ByteString value is base16 -- encoded. -- --

Examples:

-- --
--   >>> isBase16 "666f6"
--   False
--   
-- --
--   >>> isBase16 "666f"
--   True
--   
isBase16 :: ByteString -> Bool -- | Tell whether an untyped lazy ByteString value is a valid Base16 -- format. -- -- This will not tell you whether or not this is a correct Base16 -- representation, only that it conforms to the correct alphabet. To -- check whether it is a true Base16 encoded ByteString value, use -- isBase16. -- --

Examples:

-- --
--   >>> isValidBase16 "666f+/6"
--   False
--   
-- --
--   >>> isValidBase16 "666f6"
--   True
--   
isValidBase16 :: ByteString -> Bool -- | This module contains ShortByteString-valued combinators for -- implementing the RFC 4648 specification of the Base16 encoding format. -- This includes lenient decoding variants, as well as internal and -- external validation for canonicity. module Data.ByteString.Short.Base16 -- | Encode a ShortByteString value as Base16 ShortText -- -- See: RFC-4648 section 8 -- --

Examples:

-- --
--   >>> encodeBase16 "Sun"
--   "53756e"
--   
encodeBase16 :: ShortByteString -> Base16 ShortText -- | Encode a ShortByteString value as a Base16 -- ShortByteString value -- -- See: RFC-4648 section 8 -- --

Examples:

-- --
--   >>> encodeBase16' "Sun"
--   "53756e"
--   
encodeBase16' :: ShortByteString -> Base16 ShortByteString -- | Decode a Base16-encoded ShortByteString value. -- -- See: RFC-4648 section 8 -- --

Examples:

-- --
--   >>> decodeBase16 $ assertBase16 "53756e"
--   "Sun"
--   
decodeBase16 :: Base16 ShortByteString -> ShortByteString -- | Decode Base16-encoded ShortText value. -- -- See: RFC-4648 section 8 -- --

Examples:

-- --
--   >>> decodeBase16' $ assertBase16 "53756e"
--   "Sun"
--   
decodeBase16' :: Base16 ShortText -> ShortByteString -- | Decode an untyped Base16-encoded ByteString value with -- error-checking. -- -- See: RFC-4648 section 8 -- --

Examples:

-- --
--   >>> decodeBase16Untyped "53756e"
--   Right "Sun"
--   
-- --
--   >>> decodeBase16Untyped "6x"
--   Left "invalid character at offset: 1"
--   
decodeBase16Untyped :: ShortByteString -> Either Text ShortByteString -- | Decode an untyped Base16-encoded ShortByteString value -- leniently, using a strategy that never fails -- -- N.B.: this is not RFC 4648-compliant -- --

Examples:

-- --
--   >>> decodeBase16Lenient "53756e"
--   "Sun"
--   
-- --
--   >>> decodeBase16Lenient "6x6x"
--   "f"
--   
decodeBase16Lenient :: ShortByteString -> ShortByteString -- | Tell whether an untyped ShortByteString value is base16 -- encoded. -- --

Examples:

-- --
--   >>> isBase16 "666f6"
--   False
--   
-- --
--   >>> isBase16 "666f"
--   True
--   
isBase16 :: ShortByteString -> Bool -- | Tell whether an untyped ShortByteString value is a valid Base16 -- format. -- -- This will not tell you whether or not this is a correct Base16 -- representation, only that it conforms to the correct alphabet. To -- check whether it is a true Base16 encoded ShortByteString -- value, use isBase16. -- --

Examples:

-- --
--   >>> isValidBase16 "666f+/6"
--   False
--   
-- --
--   >>> isValidBase16 "666f6"
--   True
--   
isValidBase16 :: ShortByteString -> Bool -- | This module contains the error types raised in the decoding process. module Data.Text.Encoding.Base16.Error -- | This data type represents the type of decoding errors of various kinds -- as they pertain to decoding Text values. Namely, to distinguish -- between decoding errors from opaque unicode exceptions caught in the -- unicode decoding process. data Base16Error e -- | The error associated with decoding failure as a result of the Base16 -- decoding process DecodeError :: Text -> Base16Error e -- | The error associated with the decoding failure as a result of the -- conversion process ConversionError :: e -> Base16Error e instance GHC.Generics.Generic (Data.Text.Encoding.Base16.Error.Base16Error e) instance GHC.Show.Show e => GHC.Show.Show (Data.Text.Encoding.Base16.Error.Base16Error e) instance GHC.Classes.Eq e => GHC.Classes.Eq (Data.Text.Encoding.Base16.Error.Base16Error e) instance GHC.Exception.Type.Exception e => GHC.Exception.Type.Exception (Data.Text.Encoding.Base16.Error.Base16Error e) instance Control.DeepSeq.NFData e => Control.DeepSeq.NFData (Data.Text.Encoding.Base16.Error.Base16Error e) -- | This module contains Text-valued combinators for implementing -- the RFC 4648 specification of the Base16 encoding format. This -- includes lenient decoding variants, as well as internal and external -- validation for canonicity. module Data.Text.Encoding.Base16 -- | Encode a Text value in Base16 with padding. -- -- See: RFC-4648 section 8 -- --

Examples:

-- --
--   >>> encodeBase16 "Sun"
--   "53756e"
--   
encodeBase16 :: Text -> Base16 Text -- | Decode a Base16-encoded Text value. -- -- See: RFC-4648 section 8 -- --

Examples:

-- --
--   >>> decodeBase16 $ assertBase16 "53756e"
--   "Sun"
--   
decodeBase16 :: Base16 Text -> Text -- | Decode an untyped Base16-encoded Text value. -- -- See: RFC-4648 section 8 -- --

Examples:

-- --
--   >>> decodeBase16Untyped "53756e"
--   Right "Sun"
--   
-- --
--   >>> decodeBase16Untyped "6x"
--   Left "invalid character at offset: 1"
--   
decodeBase16Untyped :: Text -> Either Text Text -- | Attempt to decode an untyped Text value as Base16, converting -- from ByteString to Text according to some encoding -- function. In practice, This is something like decodeUtf8', -- which may produce an error. -- -- See: RFC-4648 section 8 -- --

Example:

-- --
--   decodeBase16With decodeUtf8'
--     :: ByteString -> Either (Base16Error UnicodeException) Text
--   
decodeBase16With :: (ByteString -> Either err Text) -> ByteString -> Either (Base16Error err) Text -- | Decode an untyped Base16-encoded Text value leniently, using a -- strategy that never fails, catching unicode exceptions raised in the -- process of converting to text values. -- -- N.B.: this is not RFC 4648-compliant. -- --

Examples:

-- --
--   >>> decodeBase16Lenient "53756e"
--   "Sun"
--   
-- --
--   >>> decodeBase16Lenient "6x6x"
--   "f"
--   
decodeBase16Lenient :: Text -> Text -- | Tell whether a Text value is Base16-encoded. -- --

Examples:

-- --
--   >>> isBase16 "666f6"
--   False
--   
-- --
--   >>> isBase16 "666f"
--   True
--   
isBase16 :: Text -> Bool -- | Tell whether a Text value is a valid Base16 format. -- -- This will not tell you whether or not this is a correct Base16 -- representation, only that it conforms to the correct shape. To check -- whether it is a true Base16 encoded Text value, use -- isBase16. -- --

Examples:

-- --
--   >>> isValidBase16 "666f+/6"
--   False
--   
-- --
--   >>> isValidBase16 "666f6"
--   True
--   
isValidBase16 :: Text -> Bool -- | This module contains Text-valued combinators for implementing -- the RFC 4648 specification of the Base16 encoding format. This -- includes lenient decoding variants, as well as internal and external -- validation for canonicity. module Data.Text.Lazy.Encoding.Base16 -- | Encode a lazy Text value in Base16 with padding. -- -- See: RFC-4648 section 8 -- --

Examples:

-- --
--   >>> encodeBase16 "Sun"
--   "53756e"
--   
encodeBase16 :: Text -> Base16 Text -- | Decode a Base16-encoded lazy Text value. -- -- See: RFC-4648 section 8 -- --

Examples:

-- --
--   >>> decodeBase16 $ assertBase16 "53756e"
--   "Sun"
--   
decodeBase16 :: Base16 Text -> Text -- | Decode an untyped Base16-encoded lazy Text value. -- -- See: RFC-4648 section 8 -- --

Examples:

-- --
--   >>> decodeBase16Untyped "53756e"
--   Right "Sun"
--   
-- --
--   >>> decodeBase16Untyped "6x"
--   Left "invalid character at offset: 1"
--   
decodeBase16Untyped :: Text -> Either Text Text -- | Attempt to decode an untyped lazy Text value as Base16, -- converting from ByteString to Text according to some -- encoding function. In practice, This is something like -- decodeUtf8', which may produce an error. -- -- See: RFC-4648 section 8 -- --
--   decodeBase16With decodeUtf8'
--     :: ByteString -> Either (Base16Error UnicodeException) Text
--   
decodeBase16With :: (ByteString -> Either err Text) -> ByteString -> Either (Base16Error err) Text -- | Decode a Base16-encoded lazy Text value leniently, using a -- strategy that never fails. -- -- Warning: in the conversion to unicode text, exceptions may be -- thrown. Please use decodeBase16' if you are unsure if you are -- working with base16-encoded values, or if you expect garbage. -- -- N.B.: this is not RFC 4648-compliant. It may give you garbage if -- you're not careful! -- --

Examples:

-- --
--   >>> decodeBase16Lenient "53756e"
--   "Sun"
--   
-- --
--   >>> decodeBase16Lenient "6x6x"
--   "f"
--   
decodeBase16Lenient :: Text -> Text -- | Tell whether a lazy Text value is Base16-encoded. -- --

Examples:

-- --
--   >>> isBase16 "666f6"
--   False
--   
-- --
--   >>> isBase16 "666f"
--   True
--   
isBase16 :: Text -> Bool -- | Tell whether a lazy Text value is a valid Base16 format. -- -- This will not tell you whether or not this is a correct Base16 -- representation, only that it conforms to the correct shape. To check -- whether it is a true Base16 encoded Text value, use -- isBase16. -- --

Examples:

-- --
--   >>> isValidBase16 "666f+/6"
--   False
--   
-- --
--   >>> isValidBase16 "666f6"
--   True
--   
isValidBase16 :: Text -> Bool -- | This module contains ShortText-valued combinators for -- implementing the RFC 4648 specification of the Base16 encoding format. -- This includes lenient decoding variants, as well as internal and -- external validation for canonicity. module Data.Text.Short.Encoding.Base16 -- | Encode a ShortText value in Base16 with padding. -- -- See: RFC-4648 section 8 -- --

Examples:

-- --
--   >>> encodeBase16 "Sun"
--   "53756e"
--   
encodeBase16 :: ShortText -> Base16 ShortText -- | Decode a Base16-encoded ShortText value. -- -- See: RFC-4648 section 8 -- --

Examples:

-- --
--   >>> decodeBase16 $ assertBase16 "53756e"
--   "Sun"
--   
decodeBase16 :: Base16 ShortText -> ShortText -- | Decode an untyped Base16-encoded ShortText value. -- -- See: RFC-4648 section 8 -- --

Examples:

-- --
--   >>> decodeBase16Untyped "53756e"
--   Right "Sun"
--   
-- --
--   >>> decodeBase16Untyped "6x"
--   Left "invalid character at offset: 1"
--   
decodeBase16Untyped :: ShortText -> Either Text ShortText -- | Attempt to decode an untyped ShortText value as Base16, -- converting from ByteString to ShortText according to -- some encoding function. In practice, This is something like -- decodeUtf8', which may produce an error. -- -- See: RFC-4648 section 8 -- --

Example:

-- --
--   decodeBase16With (fmap fromText . decodeUtf8' . fromShort)
--     :: ShortByteString -> Either (Base16Error UnicodeException) ShortText
--   
decodeBase16With :: (ShortByteString -> Either err ShortText) -> ShortByteString -> Either (Base16Error err) ShortText -- | Decode an untyped Base16-encoded ShortText value leniently, -- using a strategy that never fails, catching unicode exceptions raised -- in the process of converting to text values. -- -- N.B.: this is not RFC 4648-compliant. -- --

Examples:

-- --
--   >>> decodeBase16Lenient "53756e"
--   "Sun"
--   
-- --
--   >>> decodeBase16Lenient "6x6x"
--   "f"
--   
decodeBase16Lenient :: ShortText -> ShortText -- | Tell whether a ShortText value is Base16-encoded. -- --

Examples:

-- --
--   >>> isBase16 "666f6"
--   False
--   
-- --
--   >>> isBase16 "666f"
--   True
--   
isBase16 :: ShortText -> Bool -- | Tell whether a ShortText value is a valid Base16 format. -- -- This will not tell you whether or not this is a correct Base16 -- representation, only that it conforms to the correct shape. To check -- whether it is a true Base16 encoded ShortText value, use -- isBase16. -- --

Examples:

-- --
--   >>> isValidBase16 "666f+/6"
--   False
--   
-- --
--   >>> isValidBase16 "666f6"
--   True
--   
isValidBase16 :: ShortText -> Bool