From d355a1658d5efd962713617559359c4ab68952e9 Mon Sep 17 00:00:00 2001 From: Saku Laesvuori Date: Tue, 21 Nov 2023 12:44:07 +0200 Subject: [PATCH] =?UTF-8?q?Tuota=20hy=C3=B6dyllisempi=C3=A4=20virheit?= =?UTF-8?q?=C3=A4=20huonosti=20koodatusta=20sy=C3=B6tteest=C3=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gitea-markdown/data-gitea-markdown.cabal | 1 + gitea-markdown/src/Gitea/Preview/Markdown.hs | 16 +++++++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/gitea-markdown/data-gitea-markdown.cabal b/gitea-markdown/data-gitea-markdown.cabal index 9cf10ad..0429f97 100644 --- a/gitea-markdown/data-gitea-markdown.cabal +++ b/gitea-markdown/data-gitea-markdown.cabal @@ -10,6 +10,7 @@ stability: alpha executable gitea-markdown build-depends: base, + bytestring, containers, data-default, pandoc, diff --git a/gitea-markdown/src/Gitea/Preview/Markdown.hs b/gitea-markdown/src/Gitea/Preview/Markdown.hs index dbee46c..c81103b 100644 --- a/gitea-markdown/src/Gitea/Preview/Markdown.hs +++ b/gitea-markdown/src/Gitea/Preview/Markdown.hs @@ -2,10 +2,13 @@ module Gitea.Preview.Markdown where +import Control.Exception (throwIO) import Data.Default (def) -import Text.Pandoc (Pandoc, PandocError, ReaderOptions(..), readMarkdown, runPure, handleError, pandocExtensions, writeHtml5String) import Data.Text (Text) +import Data.Text.Encoding (decodeUtf8') +import Text.Pandoc (Pandoc, PandocError, ReaderOptions(..), readMarkdown, runPure, handleError, pandocExtensions, writeHtml5String) +import qualified Data.ByteString as BS import qualified Data.Text.IO as T import Gitea.Preview.Markdown.Math @@ -14,10 +17,13 @@ import Gitea.Preview.Markdown.Signatures main :: IO () main = do - input <- T.getContents - pandoc <- handleError $ readMD input - out <- handleError $ runPure $ writeHtml5String def $ pandocFilter pandoc - T.putStr out + input <- decodeUtf8' <$> BS.getContents + case input of + Left err -> throwIO err + Right text -> do + pandoc <- handleError $ readMD text + out <- handleError $ runPure $ writeHtml5String def $ pandocFilter pandoc + T.putStr out pandocFilter :: Pandoc -> Pandoc pandocFilter = renderSignatures'