aboutsummaryrefslogtreecommitdiff
path: root/trypandoc/trypandoc.hs
diff options
context:
space:
mode:
Diffstat (limited to 'trypandoc/trypandoc.hs')
-rw-r--r--trypandoc/trypandoc.hs7
1 files changed, 5 insertions, 2 deletions
diff --git a/trypandoc/trypandoc.hs b/trypandoc/trypandoc.hs
index c530f45f2..8f1b3278e 100644
--- a/trypandoc/trypandoc.hs
+++ b/trypandoc/trypandoc.hs
@@ -8,6 +8,7 @@ import Network.HTTP.Types.Status (status200)
import Network.HTTP.Types.Header (hContentType)
import Network.HTTP.Types.URI (queryToQueryText)
import Text.Pandoc
+import Text.Pandoc.Error (PandocError)
import Text.Pandoc.Shared (tabFilter)
import Text.Highlighting.Kate (pygments)
import Data.Aeson
@@ -29,7 +30,9 @@ app req respond = do
$ lookup fromFormat fromFormats
let writer = maybe (error $ "could not find writer for " ++ T.unpack toFormat) id
$ lookup toFormat toFormats
- let result = T.pack $ writer $ reader $ tabFilter 4 $ T.unpack text
+ let result = case reader $ tabFilter 4 $ T.unpack text of
+ Right doc -> T.pack $ writer doc
+ Left err -> error (show err)
let output = encode $ object [ T.pack "result" .= result
, T.pack "name" .=
if fromFormat == "markdown_strict"
@@ -55,7 +58,7 @@ readerOpts :: ReaderOptions
readerOpts = def { readerParseRaw = True,
readerSmart = True }
-fromFormats :: [(Text, String -> Pandoc)]
+fromFormats :: [(Text, String -> Either PandocError Pandoc)]
fromFormats = [
("native" , readNative)
,("json" , Text.Pandoc.readJSON readerOpts)