MicroHs-0.15.0.0: lib/Data/ByteString/Builder/Internal.hs
module Data.ByteString.Builder.Internal where
import qualified Prelude ()
import MiniPrelude
import Data.ByteString.Internal (StrictByteString)
import Data.ByteString.Lazy (LazyByteString, append, empty, fromStrict)
newtype Builder = Builder (LazyByteString -> LazyByteString)
instance Semigroup Builder where
Builder f <> Builder g = Builder (f . g)
instance Monoid Builder where
mempty = Builder id
instance IsString Builder where
fromString = stringUtf8
instance Show Builder where
show = show . toLazyByteString
toLazyByteString :: Builder -> LazyByteString
toLazyByteString (Builder f) = f empty
byteString :: StrictByteString -> Builder
byteString bs = Builder (fromStrict bs `append`)
lazyByteString :: LazyByteString -> Builder
lazyByteString bs = Builder (bs `append`)
stringUtf8 :: String -> Builder
stringUtf8 = byteString . _primitive "toUTF8"