Safe Haskell | None |
---|---|
Language | Haskell2010 |
A library for efficiently building up a buffer of UTF-8-encoded text. If only
safe functions are used, the resulting ByteString
is guaranteed to be valid
UTF-8.
To run a sequence of Utf8Builder actions and retrieve the resulting buffer, use
runUtf8Builder
.
In special situations, for maximum performance, unsafe functions are also provided. The unsafe functions do not guarantee the buffer is correct UTF-8.
This module is built on top of Data.BufferBuilder.
Synopsis
- data Utf8Builder a
- runUtf8Builder :: Utf8Builder () -> ByteString
- appendText :: Text -> Utf8Builder ()
- appendString :: String -> Utf8Builder ()
- appendChar :: Char -> Utf8Builder ()
- appendByte7 :: Word8 -> Utf8Builder ()
- appendChar7 :: Char -> Utf8Builder ()
- appendBS7 :: ByteString -> Utf8Builder ()
- appendLiteral7 :: Addr# -> Utf8Builder ()
- appendUrlEncoded :: ByteString -> Utf8Builder ()
- appendDecimalSignedInt :: Int -> Utf8Builder ()
- appendDecimalDouble :: Double -> Utf8Builder ()
- appendEscapedJson :: ByteString -> Utf8Builder ()
- appendEscapedJsonLiteral :: Addr# -> Utf8Builder ()
- appendEscapedJsonText :: Text -> Utf8Builder ()
- unsafeAppendBufferBuilder :: BufferBuilder () -> Utf8Builder ()
- unsafeAppendByte :: Word8 -> Utf8Builder ()
- unsafeAppendChar8 :: Char -> Utf8Builder ()
- unsafeAppendLiteral :: Addr# -> Utf8Builder ()
- unsafeAppendLiteralN :: Int -> Addr# -> Utf8Builder ()
- unsafeAppendBS :: ByteString -> Utf8Builder ()
The Utf8Builder Monad
data Utf8Builder a Source #
Instances
Monad Utf8Builder Source # | |
Defined in Data.BufferBuilder.Utf8 (>>=) :: Utf8Builder a -> (a -> Utf8Builder b) -> Utf8Builder b # (>>) :: Utf8Builder a -> Utf8Builder b -> Utf8Builder b # return :: a -> Utf8Builder a # fail :: String -> Utf8Builder a # | |
Functor Utf8Builder Source # | |
Defined in Data.BufferBuilder.Utf8 fmap :: (a -> b) -> Utf8Builder a -> Utf8Builder b # (<$) :: a -> Utf8Builder b -> Utf8Builder a # | |
Applicative Utf8Builder Source # | |
Defined in Data.BufferBuilder.Utf8 pure :: a -> Utf8Builder a # (<*>) :: Utf8Builder (a -> b) -> Utf8Builder a -> Utf8Builder b # liftA2 :: (a -> b -> c) -> Utf8Builder a -> Utf8Builder b -> Utf8Builder c # (*>) :: Utf8Builder a -> Utf8Builder b -> Utf8Builder b # (<*) :: Utf8Builder a -> Utf8Builder b -> Utf8Builder a # |
runUtf8Builder :: Utf8Builder () -> ByteString Source #
Run a sequence of Utf8Builder
actions and extracting the resulting
buffer as a ByteString
.
Text encoding
appendText :: Text -> Utf8Builder () Source #
Encodes the given Text
in UTF-8, appending it to the buffer.
appendString :: String -> Utf8Builder () Source #
Encodes the given String
in UTF-8, appending it to the buffer.
appendChar :: Char -> Utf8Builder () Source #
Encodes a single Char
in UTF-8, appending it to the buffer.
ASCII-7
appendByte7 :: Word8 -> Utf8Builder () Source #
Appends the bottom 7 bits of a byte to the buffer.
appendChar7 :: Char -> Utf8Builder () Source #
Appends the bottom 7 bits of a Char
to the buffer.
appendBS7 :: ByteString -> Utf8Builder () Source #
Appends the given ByteString to the buffer, taking the bottom 7 bits of each byte.
appendLiteral7 :: Addr# -> Utf8Builder () Source #
Appends the zero-terminated byte string at the given address to the buffer, taking the bottom 7 bits of each byte.
URL percent-encoding
appendUrlEncoded :: ByteString -> Utf8Builder () Source #
Directly calls appendUrlEncoded
. The output from URL
percent-encoding is guaranteed to be valid UTF-8.
Printing numbers
appendDecimalSignedInt :: Int -> Utf8Builder () Source #
appendDecimalDouble :: Double -> Utf8Builder () Source #
Escaped JSON
appendEscapedJson :: ByteString -> Utf8Builder () Source #
appendEscapedJsonLiteral :: Addr# -> Utf8Builder () Source #
appendEscapedJsonText :: Text -> Utf8Builder () Source #
Unsafe append operations
unsafeAppendBufferBuilder :: BufferBuilder () -> Utf8Builder () Source #
Directly append a BufferBuilder into the UTF-8 code stream. Incorrect use of this function can result in invalid UTF-8.
unsafeAppendByte :: Word8 -> Utf8Builder () Source #
Directly append a byte into the UTF-8 code stream. Incorrect use of this function can result in invalid UTF-8.
unsafeAppendChar8 :: Char -> Utf8Builder () Source #
Directly append the bottom 8 bits of the given character to the UTF-8 code stream. Incorrect use of this function can result in invalid UTF-8.
unsafeAppendLiteral :: Addr# -> Utf8Builder () Source #
Directly append the zero-terminated byte sequence pointed to by the given address. Be careful that the referenced byte sequence contains valid UTF-8.
unsafeAppendLiteralN :: Int -> Addr# -> Utf8Builder () Source #
Directly append the given byte sequence pointed to by the given address. Be careful that the referenced byte sequence contains valid UTF-8.
WARNING: passing an incorrect length value is likely to cause an access violation or worse.
unsafeAppendBS :: ByteString -> Utf8Builder () Source #
Directly append the given ByteString
to the output buffer.
Be careful that the referenced ByteString
contains valid UTF-8.