diff options
| -rw-r--r-- | pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Pandoc.hs | 5 | ||||
| -rw-r--r-- | pandoc-server/src/Text/Pandoc/Server.hs | 6 | ||||
| -rw-r--r-- | src/Text/Pandoc/App.hs | 6 | ||||
| -rw-r--r-- | src/Text/Pandoc/App/OutputSettings.hs | 7 | ||||
| -rw-r--r-- | src/Text/Pandoc/Readers.hs | 9 | ||||
| -rw-r--r-- | src/Text/Pandoc/Writers.hs | 9 |
6 files changed, 21 insertions, 21 deletions
diff --git a/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Pandoc.hs b/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Pandoc.hs index 1fdc6fd65..60f74d8b0 100644 --- a/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Pandoc.hs +++ b/pandoc-lua-engine/src/Text/Pandoc/Lua/Module/Pandoc.hs @@ -30,6 +30,7 @@ import HsLua hiding (pushModule) import System.Exit (ExitCode (..)) import Text.Pandoc.Definition import Text.Pandoc.Error (PandocError (..)) +import Text.Pandoc.Format (parseFlavoredFormat) import Text.Pandoc.Lua.Orphans () import Text.Pandoc.Lua.Marshal.AST import Text.Pandoc.Lua.Marshal.Filter (peekFilter) @@ -208,7 +209,7 @@ functions = , defun "read" ### (\content mformatspec mreaderOptions -> unPandocLua $ do let readerOpts = fromMaybe def mreaderOptions - let formatSpec = fromMaybe "markdown" mformatspec + formatSpec <- parseFlavoredFormat $ fromMaybe "markdown" mformatspec getReader formatSpec >>= \case (TextReader r, es) -> r readerOpts{readerExtensions = es} @@ -246,7 +247,7 @@ functions = , defun "write" ### (\doc mformatspec mwriterOpts -> unPandocLua $ do let writerOpts = fromMaybe def mwriterOpts - let formatSpec = fromMaybe "html" mformatspec + formatSpec <- parseFlavoredFormat $ fromMaybe "html" mformatspec getWriter formatSpec >>= \case (TextWriter w, es) -> Right <$> w writerOpts{ writerExtensions = es } doc diff --git a/pandoc-server/src/Text/Pandoc/Server.hs b/pandoc-server/src/Text/Pandoc/Server.hs index 2f43a8561..1c66a66db 100644 --- a/pandoc-server/src/Text/Pandoc/Server.hs +++ b/pandoc-server/src/Text/Pandoc/Server.hs @@ -264,13 +264,13 @@ server = convertBytes modifyPureState $ \st -> st{ stFiles = filetree } let opts = options params - let readerFormat = fromMaybe "markdown" $ optFrom opts - let writerFormat = fromMaybe "html" $ optTo opts + readerFormat <- parseFlavoredFormat <$> fromMaybe "markdown" $ optFrom opts + writerFormat <- parseFlavoredFormat <$> fromMaybe "html" $ optTo opts (readerSpec, readerExts) <- getReader readerFormat (writerSpec, writerExts) <- getWriter writerFormat let isStandalone = optStandalone opts - toformat <- formatName <$> parseFlavoredFormat writerFormat + let toformat = formatName writerFormat hlStyle <- traverse (lookupHighlightingStyle . T.unpack) $ optHighlightStyle opts diff --git a/src/Text/Pandoc/App.hs b/src/Text/Pandoc/App.hs index 0306b3b22..49fe34172 100644 --- a/src/Text/Pandoc/App.hs +++ b/src/Text/Pandoc/App.hs @@ -149,7 +149,7 @@ convertWithOpts' scriptingEngine istty datadir opts = do (map (T.pack . takeExtension) sources) "markdown" return "markdown" - Format.FlavoredFormat readerNameBase _extsDiff <- + flvrd@(Format.FlavoredFormat readerNameBase _extsDiff) <- Format.parseFlavoredFormat readerName let makeSandboxed pureReader = let files = maybe id (:) (optReferenceDoc opts) . @@ -174,10 +174,10 @@ convertWithOpts' scriptingEngine istty datadir opts = do , mempty ) else if optSandbox opts - then case runPure (getReader readerName) of + then case runPure (getReader flvrd) of Left e -> throwError e Right (r, rexts) -> return (makeSandboxed r, rexts) - else getReader readerName + else getReader flvrd outputSettings <- optToOutputSettings scriptingEngine opts let format = outputFormat outputSettings diff --git a/src/Text/Pandoc/App/OutputSettings.hs b/src/Text/Pandoc/App/OutputSettings.hs index 5851d433c..20321f52a 100644 --- a/src/Text/Pandoc/App/OutputSettings.hs +++ b/src/Text/Pandoc/App/OutputSettings.hs @@ -102,17 +102,18 @@ optToOutputSettings scriptingEngine opts = do ByteStringWriter w -> ByteStringWriter $ \o d -> sandbox files (w o d) - Format.FlavoredFormat format _extsDiff <- Format.parseFlavoredFormat writerName + flvrd@(Format.FlavoredFormat format _extsDiff) <- + Format.parseFlavoredFormat writerName (writer, writerExts) <- if "lua" `T.isSuffixOf` format then do (, mempty) <$> engineWriteCustom scriptingEngine (T.unpack format) else do if optSandbox opts - then case runPure (getWriter writerName) of + then case runPure (getWriter flvrd) of Right (w, wexts) -> return (makeSandboxed w, wexts) Left e -> throwError e - else getWriter writerName + else getWriter flvrd let standalone = optStandalone opts || not (isTextFormat format) || pdfOutput diff --git a/src/Text/Pandoc/Readers.hs b/src/Text/Pandoc/Readers.hs index ab660c5b2..61f7326ac 100644 --- a/src/Text/Pandoc/Readers.hs +++ b/src/Text/Pandoc/Readers.hs @@ -163,14 +163,13 @@ readers = [("native" , TextReader readNative) ] -- | Retrieve reader, extensions based on format spec (format+extensions). -getReader :: PandocMonad m => Text -> m (Reader m, Extensions) -getReader s = do - spec <- Format.parseFlavoredFormat s - let readerName = Format.formatName spec +getReader :: PandocMonad m => Format.FlavoredFormat -> m (Reader m, Extensions) +getReader flvrd = do + let readerName = Format.formatName flvrd case lookup readerName readers of Nothing -> throwError $ PandocUnknownReaderError readerName Just r -> (r,) <$> - Format.applyExtensionsDiff (Format.getExtensionsConfig readerName) spec + Format.applyExtensionsDiff (Format.getExtensionsConfig readerName) flvrd -- | Read pandoc document from JSON format. readJSON :: (PandocMonad m, ToSources a) diff --git a/src/Text/Pandoc/Writers.hs b/src/Text/Pandoc/Writers.hs index fc2b28e8f..92881e44c 100644 --- a/src/Text/Pandoc/Writers.hs +++ b/src/Text/Pandoc/Writers.hs @@ -192,14 +192,13 @@ writers = [ ] -- | Retrieve writer, extensions based on formatSpec (format+extensions). -getWriter :: PandocMonad m => Text -> m (Writer m, Extensions) -getWriter s = do - spec <- Format.parseFlavoredFormat s - let writerName = Format.formatName spec +getWriter :: PandocMonad m => Format.FlavoredFormat -> m (Writer m, Extensions) +getWriter flvrd = do + let writerName = Format.formatName flvrd case lookup writerName writers of Nothing -> throwError $ PandocUnknownWriterError writerName Just w -> (w,) <$> - Format.applyExtensionsDiff (Format.getExtensionsConfig writerName) spec + Format.applyExtensionsDiff (Format.getExtensionsConfig writerName) flvrd writeJSON :: PandocMonad m => WriterOptions -> Pandoc -> m Text writeJSON _ = return . UTF8.toText . BL.toStrict . encode |
