Files
sampu/src/Core/Rendering.hs
2026-04-23 10:53:56 -05:00

30 lines
1.0 KiB
Haskell

module Core.Rendering where
import Commonmark
import Data.ByteString.Lazy (ByteString)
import qualified Data.ByteString as B
import Data.Text
import Data.Text.Encoding (decodeUtf8)
import Data.Text.Lazy (toStrict)
import qualified Lucid as LU
import System.IO ()
lucidToTwain :: LU.Html () -> ByteString
lucidToTwain = LU.renderBS
mdToLucid :: Text -> LU.Html ()
mdToLucid cmtextinput = case (commonmark "" cmtextinput) of
Left _ -> LU.toHtmlRaw ("Failed to parse Markdown document" :: Text)
Right (h :: Html ()) -> LU.toHtmlRaw (renderHtml h)
mdFileToLucid :: FilePath -> IO (LU.Html ())
mdFileToLucid path = fmap (mdToLucid . decodeUtf8) (B.readFile path)
mdFileToMarkdown :: FilePath -> IO Text
mdFileToMarkdown path = fmap decodeUtf8 (B.readFile path)
mdFileToText :: FilePath -> IO (Text)
mdFileToText path = do
htmlContent <- mdFileToLucid path
return $ toStrict $ LU.renderText htmlContent