aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlbert Krewinkel <[email protected]>2022-09-29 14:39:44 +0200
committerJohn MacFarlane <[email protected]>2022-09-30 08:33:40 -0700
commit79980eee4a1854921d7fb8b14848894b53cc21a7 (patch)
tree61048df4e101e740e320c43ba2028a6d737657bb /src
parenteaf702a10f2304daf2f16c2ddcf5037dd63842cc (diff)
[API Change] Parameterize `convertWithOpts` over scripting engine.
Diffstat (limited to 'src')
-rw-r--r--src/Text/Pandoc/App.hs17
-rw-r--r--src/Text/Pandoc/App/OutputSettings.hs14
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