From 86d89e47d648770ae36dba01f7ae09d34f2ee171 Mon Sep 17 00:00:00 2001 From: Johannes Gerer Date: Wed, 26 Oct 2016 03:39:23 +0200 Subject: a --- src/Text/BlazeT.hs | 2 ++ src/Text/BlazeT/Internal.hs | 14 +++++++++++ src/Text/BlazeT/Renderer/Pretty.hs | 10 +------- src/Text/BlazeT/Renderer/String.hs | 8 +----- src/Text/BlazeT/Renderer/Text.hs | 50 +++++++------------------------------- src/Text/BlazeT/Renderer/Utf8.hs | 34 +++----------------------- 6 files changed, 31 insertions(+), 87 deletions(-) (limited to 'src/Text') diff --git a/src/Text/BlazeT.hs b/src/Text/BlazeT.hs index 27228fa..b3e7c8d 100644 --- a/src/Text/BlazeT.hs +++ b/src/Text/BlazeT.hs @@ -62,6 +62,8 @@ module Text.BlazeT ,runMarkupT ,execMarkup ,execMarkupT + ,runWith + ,execWith ) where import qualified Text.Blaze as B diff --git a/src/Text/BlazeT/Internal.hs b/src/Text/BlazeT/Internal.hs index 24ef1fe..f0c3edb 100644 --- a/src/Text/BlazeT/Internal.hs +++ b/src/Text/BlazeT/Internal.hs @@ -83,8 +83,11 @@ module Text.BlazeT.Internal ,wrapMarkupT ,wrapMarkup2 ,wrapMarkupT2 + ,runWith + ,execWith ) where +import Control.Arrow import Control.Monad.Identity import Control.Monad.Trans.Class import Control.Monad.Writer.Strict @@ -121,10 +124,21 @@ runMarkupT :: MarkupT m a -> m (a,B.Markup) runMarkupT = runWriterT . fromMarkupT {-# INLINE runMarkupT #-} +-- | run the MarkupT and return a pair consisting of the result of the +-- computation and the blaze markup rendered with a blaze renderer +-- like 'Text.Blaze.Renderer.Text.renderHtml' +runWith :: Monad m => (MarkupM () -> c) -> MarkupT m a -> m (a, c) +runWith renderer = liftM (second $ renderer . wrapMarkup) . runMarkupT +{-# INLINE runWith #-} + execMarkupT :: Monad m => MarkupT m a -> m B.Markup execMarkupT = liftM snd . runMarkupT {-# INLINE execMarkupT #-} +execWith :: Monad m => (MarkupM () -> c) -> MarkupT m a -> m c +execWith renderer = liftM snd . runWith renderer +{-# INLINE execWith #-} + runMarkup :: MarkupM a -> (a,B.Markup) runMarkup = runIdentity . runMarkupT {-# INLINE runMarkup #-} diff --git a/src/Text/BlazeT/Renderer/Pretty.hs b/src/Text/BlazeT/Renderer/Pretty.hs index 8977c94..fa8cdad 100644 --- a/src/Text/BlazeT/Renderer/Pretty.hs +++ b/src/Text/BlazeT/Renderer/Pretty.hs @@ -1,22 +1,14 @@ module Text.BlazeT.Renderer.Pretty ( renderMarkup , renderHtml - , renderMarkupT - , renderHtmlT ) where -import Control.Monad -import Control.Monad.Identity import qualified Text.Blaze.Renderer.Pretty as BU import Text.BlazeT renderMarkup :: MarkupM a -> String -renderMarkup = runIdentity . renderMarkupT -renderMarkupT :: Monad m => MarkupT m a -> m String -renderMarkupT = liftM BU.renderMarkup . execMarkupT +renderMarkup = BU.renderMarkup . execMarkup renderHtml :: MarkupM a -> String renderHtml = renderMarkup -renderHtmlT :: Monad m => MarkupT m a -> m String -renderHtmlT = renderMarkupT diff --git a/src/Text/BlazeT/Renderer/String.hs b/src/Text/BlazeT/Renderer/String.hs index 0a2de8a..9f0e0a0 100644 --- a/src/Text/BlazeT/Renderer/String.hs +++ b/src/Text/BlazeT/Renderer/String.hs @@ -2,8 +2,6 @@ module Text.BlazeT.Renderer.String ( fromChoiceString , renderMarkup , renderHtml - , renderMarkupT - , renderHtmlT ) where import Control.Monad @@ -16,12 +14,8 @@ fromChoiceString :: ChoiceString -> String -> String fromChoiceString = BU.fromChoiceString renderMarkup :: MarkupM a -> String -renderMarkup = runIdentity . renderMarkupT -renderMarkupT :: Monad m => MarkupT m a -> m String -renderMarkupT = liftM BU.renderMarkup . execMarkupT +renderMarkup = BU.renderMarkup . execMarkup renderHtml :: MarkupM a -> String renderHtml = renderMarkup -renderHtmlT :: Monad m => MarkupT m a -> m String -renderHtmlT = renderMarkupT diff --git a/src/Text/BlazeT/Renderer/Text.hs b/src/Text/BlazeT/Renderer/Text.hs index 31181eb..991c81c 100644 --- a/src/Text/BlazeT/Renderer/Text.hs +++ b/src/Text/BlazeT/Renderer/Text.hs @@ -1,13 +1,5 @@ module Text.BlazeT.Renderer.Text - ( renderMarkupBuilderT - , renderMarkupBuilder - , renderMarkupBuilderWithT - , renderMarkupT - , renderMarkupWithT - , renderHtmlBuilderT - , renderHtmlBuilderWithT - , renderHtmlT - , renderHtmlWithT + ( renderMarkupBuilder , renderMarkupBuilderWith , renderMarkup , renderMarkupWith @@ -17,9 +9,7 @@ module Text.BlazeT.Renderer.Text , renderHtmlWith ) where -import Control.Monad import Data.ByteString (ByteString) -import Control.Monad.Identity import Data.Text (Text) import qualified Data.Text.Lazy as L import qualified Data.Text.Lazy.Builder as B @@ -28,48 +18,26 @@ import qualified Text.Blaze.Renderer.Text as BU import Text.BlazeT renderMarkupBuilder :: MarkupM a -> B.Builder -renderMarkupBuilder = runIdentity . renderMarkupBuilderT - -renderMarkupBuilderT :: Monad m => MarkupT m a -> m B.Builder -renderMarkupBuilderT = liftM BU.renderMarkupBuilder . execMarkupT +renderMarkupBuilder = BU.renderMarkupBuilder . execMarkup renderHtmlBuilder :: MarkupM a -> B.Builder renderHtmlBuilder = renderMarkupBuilder -renderHtmlBuilderT :: Monad m => MarkupT m a -> m B.Builder -renderHtmlBuilderT = renderMarkupBuilderT - renderMarkup :: MarkupM a -> L.Text -renderMarkup = runIdentity . renderMarkupT -renderMarkupT :: Monad m => MarkupT m a -> m L.Text -renderMarkupT = liftM BU.renderMarkup . execMarkupT +renderMarkup = BU.renderMarkup . execMarkup renderHtml :: MarkupM a -> L.Text renderHtml = renderMarkup -renderHtmlT :: Monad m => MarkupT m a -> m L.Text -renderHtmlT = renderMarkupT - -renderMarkupWithT :: Monad m => (ByteString -> Text) -> MarkupT m a -> m L.Text -renderMarkupWithT g = liftM (BU.renderMarkupWith g) . execMarkupT renderMarkupWith :: (ByteString -> Text) -> MarkupM a -> L.Text -renderMarkupWith g = runIdentity . renderMarkupWithT g - -renderHtmlWithT :: Monad m => (ByteString -> Text) -> MarkupT m a -> m L.Text -renderHtmlWithT g = liftM (BH.renderHtmlWith g) . execMarkupT +renderMarkupWith g = (BH.renderHtmlWith g) . execMarkup renderHtmlWith :: (ByteString -> Text) -> MarkupM a -> L.Text -renderHtmlWith g = runIdentity . renderHtmlWithT g - -renderHtmlBuilderWithT :: Monad m => (ByteString -> Text) -> MarkupT m a -> m B.Builder -renderHtmlBuilderWithT g = liftM (BH.renderHtmlBuilderWith g) . execMarkupT - -renderHtmlBuilderWith :: (ByteString -> Text) -> MarkupM a -> B.Builder -renderHtmlBuilderWith g = runIdentity . renderHtmlBuilderWithT g +renderHtmlWith = renderMarkupWith +renderMarkupBuilderWith :: (ByteString -> Text) -> MarkupM a -> B.Builder +renderMarkupBuilderWith g = (BU.renderMarkupBuilderWith g) . execMarkup -renderMarkupBuilderWithT :: Monad m => (ByteString -> Text) -> MarkupT m a -> m B.Builder -renderMarkupBuilderWithT g = liftM (BU.renderMarkupBuilderWith g) . execMarkupT +renderHtmlBuilderWith :: (ByteString -> Text) -> MarkupM a -> B.Builder +renderHtmlBuilderWith = renderHtmlBuilderWith -renderMarkupBuilderWith :: (ByteString -> Text) -> MarkupM a -> B.Builder -renderMarkupBuilderWith g = runIdentity . renderMarkupBuilderWithT g diff --git a/src/Text/BlazeT/Renderer/Utf8.hs b/src/Text/BlazeT/Renderer/Utf8.hs index 292f81f..b5fd656 100644 --- a/src/Text/BlazeT/Renderer/Utf8.hs +++ b/src/Text/BlazeT/Renderer/Utf8.hs @@ -13,54 +13,28 @@ module Text.BlazeT.Renderer.Utf8 , renderHtmlBuilder , renderHtml , renderHtmlToByteStringIO - - -- * new BlazeT stuff - , renderMarkupBuilderT - , renderMarkupT - , renderMarkupToByteStringIOT - , renderHtmlToByteStringIOT - , renderHtmlBuilderT - , renderHtmlT ) where import qualified Blaze.ByteString.Builder as B -import Control.Monad -import Control.Monad.Identity import qualified Data.ByteString as BS import qualified Data.ByteString.Lazy as BL import qualified Text.Blaze.Renderer.Utf8 as BU import Text.BlazeT renderMarkupBuilder :: MarkupM a -> B.Builder -renderMarkupBuilder = runIdentity . renderMarkupBuilderT - -renderMarkupBuilderT :: Monad m => MarkupT m a -> m B.Builder -renderMarkupBuilderT = liftM BU.renderMarkupBuilder . execMarkupT +renderMarkupBuilder = BU.renderMarkupBuilder . execMarkup renderHtmlBuilder :: MarkupM a -> B.Builder renderHtmlBuilder = renderMarkupBuilder -renderHtmlBuilderT :: Monad m => MarkupT m a -> m B.Builder -renderHtmlBuilderT = renderMarkupBuilderT - renderMarkup :: MarkupM a -> BL.ByteString -renderMarkup = runIdentity . renderMarkupT -renderMarkupT :: Monad m => MarkupT m a -> m BL.ByteString -renderMarkupT = liftM BU.renderMarkup . execMarkupT +renderMarkup = BU.renderMarkup . execMarkup renderHtml :: MarkupM a -> BL.ByteString renderHtml = renderMarkup -renderHtmlT :: Monad m => MarkupT m a -> m BL.ByteString -renderHtmlT = renderMarkupT renderMarkupToByteStringIO :: (BS.ByteString -> IO ()) -> MarkupM a -> IO () -renderMarkupToByteStringIO g = runIdentity . renderMarkupToByteStringIOT g -renderMarkupToByteStringIOT :: Monad m => (BS.ByteString -> IO ()) -> - MarkupT m a -> m (IO ()) -renderMarkupToByteStringIOT g = liftM (BU.renderMarkupToByteStringIO g) . execMarkupT +renderMarkupToByteStringIO g = BU.renderMarkupToByteStringIO g . execMarkup renderHtmlToByteStringIO :: (BS.ByteString -> IO ()) -> MarkupM a -> IO () -renderHtmlToByteStringIO g = runIdentity . renderMarkupToByteStringIOT g -renderHtmlToByteStringIOT :: Monad m => (BS.ByteString -> IO ()) -> - MarkupT m a -> m (IO ()) -renderHtmlToByteStringIOT g = liftM (BU.renderMarkupToByteStringIO g) . execMarkupT +renderHtmlToByteStringIO = renderMarkupToByteStringIO -- cgit v1.2.3