Lua filters: set global FORMAT instead of args.
This changes the type of runLuaFilter.
This commit is contained in:
parent
3fe4aad5a1
commit
9a47c7863b
3 changed files with 12 additions and 8 deletions
|
@ -132,6 +132,10 @@ Elements without matching functions are left untouched.
|
|||
See [module documentation](pandoc-module.html) for a list of pandoc
|
||||
elements.
|
||||
|
||||
The global `FORMAT` is set to the format of the pandoc writer
|
||||
being used (`html5`, `latex`, etc.), so the behavior of a filter
|
||||
can be made conditional on the eventual output format.
|
||||
|
||||
# Pandoc Module
|
||||
|
||||
The `pandoc` lua module is loaded into the filter's lua
|
||||
|
|
|
@ -514,7 +514,7 @@ convertWithOpts opts = do
|
|||
>=> maybe return extractMedia (optExtractMedia opts)
|
||||
>=> return . flip (foldr addMetadata) metadata
|
||||
>=> applyTransforms transforms
|
||||
>=> applyLuaFilters datadir (optLuaFilters opts) [format]
|
||||
>=> applyLuaFilters datadir (optLuaFilters opts) format
|
||||
>=> applyFilters readerOpts datadir filters' [format]
|
||||
)
|
||||
media <- getMediaBag
|
||||
|
@ -850,12 +850,12 @@ expandFilterPath mbDatadir fp = liftIO $ do
|
|||
_ -> return fp
|
||||
|
||||
applyLuaFilters :: MonadIO m
|
||||
=> Maybe FilePath -> [FilePath] -> [String] -> Pandoc
|
||||
=> Maybe FilePath -> [FilePath] -> String -> Pandoc
|
||||
-> m Pandoc
|
||||
applyLuaFilters mbDatadir filters args d = do
|
||||
applyLuaFilters mbDatadir filters format d = do
|
||||
expandedFilters <- mapM (expandFilterPath mbDatadir) filters
|
||||
let go f d' = liftIO $ do
|
||||
res <- E.try (runLuaFilter mbDatadir f args d')
|
||||
res <- E.try (runLuaFilter mbDatadir f format d')
|
||||
case res of
|
||||
Right x -> return x
|
||||
Left (LuaException s) -> E.throw (PandocFilterError f s)
|
||||
|
|
|
@ -51,14 +51,14 @@ import qualified Data.Map as Map
|
|||
import qualified Foreign.Lua as Lua
|
||||
|
||||
runLuaFilter :: (MonadIO m)
|
||||
=> Maybe FilePath -> FilePath -> [String] -> Pandoc -> m Pandoc
|
||||
runLuaFilter datadir filterPath args pd = liftIO . Lua.runLua $ do
|
||||
=> Maybe FilePath -> FilePath -> String -> Pandoc -> m Pandoc
|
||||
runLuaFilter datadir filterPath format pd = liftIO . Lua.runLua $ do
|
||||
Lua.openlibs
|
||||
-- store module in global "pandoc"
|
||||
pushPandocModule datadir
|
||||
Lua.setglobal "pandoc"
|
||||
push args
|
||||
Lua.setglobal "arg"
|
||||
push format
|
||||
Lua.setglobal "FORMAT"
|
||||
top <- Lua.gettop
|
||||
stat <- Lua.dofile filterPath
|
||||
if stat /= OK
|
||||
|
|
Loading…
Add table
Reference in a new issue