{-# LANGUAGE OverloadedStrings #-} module Text.Seonbi.ContentTypesSpec (spec) where import Data.Text import qualified Data.Text.Lazy as LT import Data.Text.Lazy.Builder import Test.Hspec import Text.Seonbi.Html import Text.Seonbi.ContentTypes import qualified HTMLEntities.Builder import HTMLEntities.Decoder textReverser :: (Monad m, MonadFail m) => HtmlTransformer m textReverser entities = return $ reverseText <$> entities where reverseText :: HtmlEntity -> HtmlEntity reverseText e@HtmlText { rawText = t } = e { rawText = encode $ Data.Text.reverse $ decode t } reverseText e@HtmlCdata { text = t } = e { text = Data.Text.reverse t } reverseText e = e decode :: Text -> Text decode = LT.toStrict . toLazyText . htmlEncodedText encode :: Text -> Text encode = LT.toStrict . toLazyText . HTMLEntities.Builder.text spec :: Spec spec = do specify "asHtmlTransformer" $ do r <- asHtmlTransformer textReverser "
foo bar
baz
oofrab
zab
foo bar
baz
oofrab
zab
foo bar
baz