module Text.Show.Text.Data.String.UTF8 (showbUTF8, toBuilder, toBuilderGeneric) where
import qualified Codec.Binary.UTF8.Generic as G (foldr)
import Codec.Binary.UTF8.Generic (UTF8Bytes)
import qualified Data.ByteString as BS
import qualified Data.ByteString.Lazy as BL
import Data.Monoid.Compat
import Data.String.UTF8 (UTF8, toRep)
import Data.Word (Word8)
import Prelude hiding (Show)
import Text.Show.Text (Show(showb), Builder)
import Text.Show.Text.Data.Text (showbBuilder)
import Text.Show.Text.Utils (s)
#include "inline.h"
showbUTF8 :: UTF8Bytes string index => UTF8 string -> Builder
showbUTF8 = showbBuilder . toBuilder
toBuilder :: UTF8Bytes string index => UTF8 string -> Builder
toBuilder = toBuilderGeneric . toRep
toBuilderGeneric :: UTF8Bytes bytestring index => bytestring -> Builder
toBuilderGeneric = G.foldr ((<>) . s) mempty
instance UTF8Bytes string index => Show (UTF8 string) where
showb = showbUTF8
INLINE_INST_FUN(showb)