1 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',';')))) $ -- < 27 P.condB (== c2w '>' ) (fixed4 ('&',('g',('t',';')))) $ -- > 28 P.condB (== c2w '&' ) (fixed5 ('&',('a',('m',('p',';'))))) $ -- & 29 P.condB (== c2w '"' ) (fixed6 ('&',('q',('u',('o',('t',';')))))) $ -- " 30 P.condB (== c2w '\'') (fixed5 ('&',('#',('3',('9',';'))))) $ -- ' 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 -}