diff options
| author | Albert Krewinkel <[email protected]> | 2022-09-29 14:39:44 +0200 |
|---|---|---|
| committer | John MacFarlane <[email protected]> | 2022-09-30 08:33:40 -0700 |
| commit | 79980eee4a1854921d7fb8b14848894b53cc21a7 (patch) | |
| tree | 61048df4e101e740e320c43ba2028a6d737657bb /src | |
| parent | eaf702a10f2304daf2f16c2ddcf5037dd63842cc (diff) | |
[API Change] Parameterize `convertWithOpts` over scripting engine.
Diffstat (limited to 'src')
| -rw-r--r-- | src/Text/Pandoc/App.hs | 17 | ||||
| -rw-r--r-- | src/Text/Pandoc/App/OutputSettings.hs | 14 |
2 files changed, 20 insertions, 11 deletions
diff --git a/src/Text/Pandoc/App.hs b/src/Text/Pandoc/App.hs index 1cbdb0e78..493b58a1f 100644 --- a/src/Text/Pandoc/App.hs +++ b/src/Text/Pandoc/App.hs @@ -64,13 +64,13 @@ import Text.Pandoc.App.OutputSettings (OutputSettings (..), optToOutputSettings) import Text.Collate.Lang (Lang (..), parseLang) import Text.Pandoc.Filter (Filter (JSONFilter, LuaFilter), Environment (..), applyFilters) -import Text.Pandoc.Lua as Lua (getEngine, readCustom) import Text.Pandoc.PDF (makePDF) import Text.Pandoc.Scripting (ScriptingEngine (..)) import Text.Pandoc.SelfContained (makeSelfContained) import Text.Pandoc.Shared (eastAsianLineBreakFilter, headerShift, isURI, tabFilter, uriPathToPath, filterIpynbOutput, defaultUserDataDir, tshow, textToIdentifier) +import Text.Pandoc.Sources (toSources) import Text.Pandoc.Writers.Shared (lookupMetaString) import Text.Pandoc.Readers.Markdown (yamlToMeta) import qualified Text.Pandoc.UTF8 as UTF8 @@ -79,8 +79,8 @@ import System.Posix.IO (stdOutput) import System.Posix.Terminal (queryTerminal) #endif -convertWithOpts :: Opt -> IO () -convertWithOpts opts = do +convertWithOpts :: ScriptingEngine -> Opt -> IO () +convertWithOpts scriptingEngine opts = do let outputFile = fromMaybe "-" (optOutputFile opts) datadir <- case optDataDir opts of Nothing -> do @@ -102,7 +102,6 @@ convertWithOpts opts = do #else istty <- liftIO $ queryTerminal stdOutput #endif - scriptingEngine <- Lua.getEngine res <- runIO $ convertWithOpts' scriptingEngine istty datadir opts case res of @@ -173,14 +172,20 @@ convertWithOpts' scriptingEngine istty datadir opts = do (reader, readerExts) <- if ".lua" `T.isSuffixOf` readerName - then return (TextReader (readCustom (T.unpack readerName)), mempty) + then return ( TextReader $ \ropts s -> + engineReadCustom scriptingEngine + (T.unpack readerName) + ropts + (toSources s) + , mempty + ) else if optSandbox opts then case runPure (getReader readerName) of Left e -> throwError e Right (r, rexts) -> return (makeSandboxed r, rexts) else getReader readerName - outputSettings <- optToOutputSettings opts + outputSettings <- optToOutputSettings scriptingEngine opts let format = outputFormat outputSettings let writer = outputWriter outputSettings let writerName = outputWriterName outputSettings diff --git a/src/Text/Pandoc/App/OutputSettings.hs b/src/Text/Pandoc/App/OutputSettings.hs index ebbe2c1b2..fd6b8afbd 100644 --- a/src/Text/Pandoc/App/OutputSettings.hs +++ b/src/Text/Pandoc/App/OutputSettings.hs @@ -39,7 +39,7 @@ import Text.Pandoc.App.FormatHeuristics (formatFromFilePaths) import Text.Pandoc.App.Opt (Opt (..)) import Text.Pandoc.App.CommandLineOptions (engines, setVariable) import Text.Pandoc.Highlighting (lookupHighlightingStyle) -import Text.Pandoc.Lua (writeCustom) +import Text.Pandoc.Scripting (ScriptingEngine (engineWriteCustom)) import qualified Text.Pandoc.UTF8 as UTF8 readUtf8File :: PandocMonad m => FilePath -> m T.Text @@ -55,8 +55,9 @@ data OutputSettings m = OutputSettings } -- | Get output settings from command line options. -optToOutputSettings :: (PandocMonad m, MonadIO m) => Opt -> m (OutputSettings m) -optToOutputSettings opts = do +optToOutputSettings :: (PandocMonad m, MonadIO m) + => ScriptingEngine -> Opt -> m (OutputSettings m) +optToOutputSettings scriptingEngine opts = do let outputFile = fromMaybe "-" (optOutputFile opts) when (optDumpArgs opts) . liftIO $ do @@ -107,8 +108,11 @@ optToOutputSettings opts = do (writer, writerExts) <- if ".lua" `T.isSuffixOf` format - then return (TextWriter - (\o d -> writeCustom (T.unpack writerName) o d), mempty) + then return ( TextWriter $ + engineWriteCustom scriptingEngine + (T.unpack writerName) + , mempty + ) else if optSandbox opts then case runPure (getWriter writerName) of |
