module Cheapskate.Lucid
(
  renderDoc,
  renderBlocks,
  renderInlines,
)
where


import           Cheapskate
import qualified Cheapskate.Html as Cheapskate

import qualified Lucid.Base as Lucid

import qualified Text.Blaze.Html               as Blaze
import qualified Text.Blaze.Html.Renderer.Utf8 as Blaze


blazeToLucid :: Monad m => Blaze.Html -> Lucid.HtmlT m ()
blazeToLucid b = Lucid.HtmlT (return (const (Blaze.renderHtmlBuilder b), ()))
{-# INLINE blazeToLucid #-}

renderDoc :: Monad m => Doc -> Lucid.HtmlT m ()
renderDoc doc = blazeToLucid (Cheapskate.renderDoc doc)

renderBlocks :: Monad m => Options -> Blocks -> Lucid.HtmlT m ()
renderBlocks opts bs = blazeToLucid (Cheapskate.renderBlocks opts bs)

renderInlines :: Monad m => Options -> Inlines -> Lucid.HtmlT m ()
renderInlines opts is = blazeToLucid (Cheapskate.renderInlines opts is)