diff options
| -rw-r--r-- | doc/lua-filters.md | 4 | ||||
| -rw-r--r-- | src/Text/Pandoc/App.hs | 8 | ||||
| -rw-r--r-- | src/Text/Pandoc/Lua.hs | 8 | 
3 files changed, 12 insertions, 8 deletions
| diff --git a/doc/lua-filters.md b/doc/lua-filters.md index 5e43afb26..16f6bfd56 100644 --- a/doc/lua-filters.md +++ b/doc/lua-filters.md @@ -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 diff --git a/src/Text/Pandoc/App.hs b/src/Text/Pandoc/App.hs index 89a804176..c26b8e768 100644 --- a/src/Text/Pandoc/App.hs +++ b/src/Text/Pandoc/App.hs @@ -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) diff --git a/src/Text/Pandoc/Lua.hs b/src/Text/Pandoc/Lua.hs index 2860b84df..ab3b5f4ca 100644 --- a/src/Text/Pandoc/Lua.hs +++ b/src/Text/Pandoc/Lua.hs @@ -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 | 
