diff options
| author | Albert Krewinkel <[email protected]> | 2022-09-29 13:59:34 +0200 |
|---|---|---|
| committer | John MacFarlane <[email protected]> | 2022-09-30 08:33:40 -0700 |
| commit | 78814f27e07e2b9953ac1aba7f9646c3dca15a13 (patch) | |
| tree | 61b721fd7c6a89fd0b690daa39f2391a2fa6a20d /src | |
| parent | 4d365ca3ff740c5f574271a86c164d8c04daa83d (diff) | |
[API Change] Filter: Parameterize `applyFilters` over scripting engine.
Pass the scripting engine as a parameter so it can be swapped out.
Diffstat (limited to 'src')
| -rw-r--r-- | src/Text/Pandoc/App.hs | 13 | ||||
| -rw-r--r-- | src/Text/Pandoc/Filter.hs | 9 |
2 files changed, 13 insertions, 9 deletions
diff --git a/src/Text/Pandoc/App.hs b/src/Text/Pandoc/App.hs index cad3da9b7..1cbdb0e78 100644 --- a/src/Text/Pandoc/App.hs +++ b/src/Text/Pandoc/App.hs @@ -64,8 +64,9 @@ 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 (readCustom) +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, @@ -101,8 +102,9 @@ convertWithOpts opts = do #else istty <- liftIO $ queryTerminal stdOutput #endif + scriptingEngine <- Lua.getEngine - res <- runIO $ convertWithOpts' istty datadir opts + res <- runIO $ convertWithOpts' scriptingEngine istty datadir opts case res of Left e -> E.throwIO e Right (output, reports) -> do @@ -121,11 +123,12 @@ convertWithOpts opts = do BinaryOutput bs -> writeFnBinary outputFile bs convertWithOpts' :: (PandocMonad m, MonadIO m, MonadMask m) - => Bool + => ScriptingEngine + -> Bool -> Maybe FilePath -> Opt -> m (PandocOutput, [LogMessage]) -convertWithOpts' istty datadir opts = do +convertWithOpts' scriptingEngine istty datadir opts = do let outputFile = fromMaybe "-" (optOutputFile opts) let filters = optFilters opts let verbosity = optVerbosity opts @@ -337,7 +340,7 @@ convertWithOpts' istty datadir opts = do >=> return . adjustMetadata (<> optMetadata opts) >=> return . adjustMetadata (<> cslMetadata) >=> applyTransforms transforms - >=> applyFilters filterEnv filters [T.unpack format] + >=> applyFilters scriptingEngine filterEnv filters [T.unpack format] >=> (if not (optSandbox opts) && (isJust (optExtractMedia opts) || writerNameBase == "docx") -- for fallback pngs diff --git a/src/Text/Pandoc/Filter.hs b/src/Text/Pandoc/Filter.hs index 8ab1347d1..2bfcf9b8a 100644 --- a/src/Text/Pandoc/Filter.hs +++ b/src/Text/Pandoc/Filter.hs @@ -29,8 +29,8 @@ import Text.Pandoc.Definition (Pandoc) import Text.Pandoc.Filter.Environment (Environment (..)) import Text.Pandoc.Logging import Text.Pandoc.Citeproc (processCitations) +import Text.Pandoc.Scripting (ScriptingEngine (engineApplyFilter)) import qualified Text.Pandoc.Filter.JSON as JSONFilter -import qualified Text.Pandoc.Lua as LuaFilter import qualified Data.Text as T import System.FilePath (takeExtension) import Control.Applicative ((<|>)) @@ -74,19 +74,20 @@ instance ToJSON Filter where -- | Modify the given document using a filter. applyFilters :: (PandocMonad m, MonadIO m) - => Environment + => ScriptingEngine + -> Environment -> [Filter] -> [String] -> Pandoc -> m Pandoc -applyFilters fenv filters args d = do +applyFilters scrngin fenv filters args d = do expandedFilters <- mapM expandFilterPath filters foldM applyFilter d expandedFilters where applyFilter doc (JSONFilter f) = withMessages f $ JSONFilter.apply fenv args f doc applyFilter doc (LuaFilter f) = - withMessages f $ LuaFilter.applyFilter fenv args f doc + withMessages f $ engineApplyFilter scrngin fenv args f doc applyFilter doc CiteprocFilter = processCitations doc withMessages f action = do |
