1 {-# LANGUAGE OverloadedStrings #-}
    2 module Blaze.ByteString.Builder.Html.Word
    3   (-- wordHtmlEscaped
    4   -- , fromHtmlEscapedWord
    5   -- , fromHtmlEscapedWordList
    6     fromHtmlEscapedByteString
    7   , fromHtmlEscapedLazyByteString
    8   -- , fromHtmlEscapedText
    9   -- , fromHtmlEscapedLazyText
   10   ) where
   11 
   12 import qualified Data.ByteString as BS
   13 import qualified Data.ByteString.Builder as B
   14 import qualified Data.ByteString.Builder.Prim as P
   15 import Data.ByteString.Internal (c2w)
   16 import qualified Data.ByteString.Lazy as BSL
   17 import Data.Word (Word8)
   18 -- import qualified Data.Text as T
   19 -- import qualified Data.Text.Encoding as TE
   20 -- import qualified Data.Text.Lazy as TL
   21 -- import qualified Data.Text.Lazy.Encoding as TLE
   22 
   23 wordHtmlEscaped :: P.BoundedPrim Word8
   24 wordHtmlEscaped =
   25   P.condB (>  c2w '>' ) (P.condB (== c2w '\DEL') P.emptyB $ P.liftFixedToBounded P.word8) $
   26   P.condB (== c2w '<' ) (fixed4 ('&',('l',('t',';')))) $        -- &lt;
   27   P.condB (== c2w '>' ) (fixed4 ('&',('g',('t',';')))) $        -- &gt;
   28   P.condB (== c2w '&' ) (fixed5 ('&',('a',('m',('p',';'))))) $  -- &amp;
   29   P.condB (== c2w '"' ) (fixed6 ('&',('q',('u',('o',('t',';')))))) $  -- &quot;
   30   P.condB (== c2w '\'') (fixed5 ('&',('#',('3',('9',';'))))) $  -- &#39;
   31   P.condB (\c -> c >= c2w ' ' || c == c2w '\t' || c == c2w '\n' || c == c2w '\r')
   32         (P.liftFixedToBounded P.word8) P.emptyB
   33   where
   34   fixed4 x = P.liftFixedToBounded $ const x P.>$<
   35     P.char8 P.>*< P.char8 P.>*< P.char8 P.>*< P.char8
   36   fixed5 x = P.liftFixedToBounded $ const x P.>$<
   37     P.char8 P.>*< P.char8 P.>*< P.char8 P.>*< P.char8 P.>*< P.char8
   38   fixed6 x = P.liftFixedToBounded $ const x P.>$<
   39     P.char8 P.>*< P.char8 P.>*< P.char8 P.>*< P.char8 P.>*< P.char8 P.>*< P.char8
   40 
   41 {-
   42 fromHtmlEscapedWord :: Word8 -> B.Builder         
   43 fromHtmlEscapedWord = P.primBounded wordHtmlEscaped
   44 
   45 fromHtmlEscapedWordList :: [Word8] -> B.Builder              
   46 fromHtmlEscapedWordList = P.primMapListBounded wordHtmlEscaped
   47 -}
   48                                                                      
   49 fromHtmlEscapedByteString :: BS.ByteString -> B.Builder
   50 fromHtmlEscapedByteString = P.primMapByteStringBounded wordHtmlEscaped
   51                                                                              
   52 fromHtmlEscapedLazyByteString :: BSL.ByteString -> B.Builder
   53 fromHtmlEscapedLazyByteString = P.primMapLazyByteStringBounded wordHtmlEscaped
   54                                                                 
   55 {-
   56 fromHtmlEscapedText :: T.Text -> B.Builder
   57 fromHtmlEscapedText = TE.encodeUtf8BuilderEscaped wordHtmlEscaped    
   58 
   59 fromHtmlEscapedLazyText :: TL.Text -> B.Builder
   60 fromHtmlEscapedLazyText = TLE.encodeUtf8BuilderEscaped wordHtmlEscaped
   61 -}