30 lines
1.0 KiB
Haskell
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
|