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