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
#if !(MIN_VERSION_base(4,8,0))
import Data.Monoid (mempty)
#endif
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)