module Web.Hyperbole.View.Render
  ( renderText
  , renderLazyByteString
  , renderBody
  ) where

import Data.ByteString.Lazy qualified as BL
import Data.Text (Text)
import Web.Atomic.Render qualified as Atomic
import Web.Hyperbole.Types.Response (Body (..))
import Web.Hyperbole.View.Types (View, execView)


renderText :: View () () -> Text
renderText :: View () () -> Text
renderText = Html () -> Text
Atomic.renderText (Html () -> Text) -> (View () () -> Html ()) -> View () () -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. () -> ViewState () -> View () () -> Html ()
forall c a. c -> ViewState c -> View c a -> Html a
execView () ()


renderLazyByteString :: View () () -> BL.ByteString
renderLazyByteString :: View () () -> ByteString
renderLazyByteString = Html () -> ByteString
Atomic.renderLazyByteString (Html () -> ByteString)
-> (View () () -> Html ()) -> View () () -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. () -> ViewState () -> View () () -> Html ()
forall c a. c -> ViewState c -> View c a -> Html a
execView () ()


renderBody :: View () () -> Body
renderBody :: View () () -> Body
renderBody View () ()
v = ByteString -> Body
Body (ByteString -> Body) -> ByteString -> Body
forall a b. (a -> b) -> a -> b
$ View () () -> ByteString
renderLazyByteString View () ()
v