diff options
| author | Albert Krewinkel <[email protected]> | 2022-09-29 12:55:26 +0200 |
|---|---|---|
| committer | John MacFarlane <[email protected]> | 2022-09-30 08:33:40 -0700 |
| commit | 04902d26dade413c91dd098b1659f3f817d0adcb (patch) | |
| tree | 527c793d92b9867ac7ccbf3e6e15421ffa8b0167 /src | |
| parent | 0e947c747369dce55f5c5c69532835776f7903f9 (diff) | |
[API Change] Change type of Text.Pandoc.Lua.applyFilter
The module Text.Pandoc.Filter.Lua has been merged into Text.Pandoc.Lua.
The function `applyFilter` now has type
``` haskell
applyFilter :: (PandocMonad m, MonadIO m)
=> Environment-> [String]-> FilePath-> Pandoc-> m Pandoc
```
where `Environment` is defined in Text.Pandoc.Filter.Environment.
Diffstat (limited to 'src')
| -rw-r--r-- | src/Text/Pandoc/Filter.hs | 4 | ||||
| -rw-r--r-- | src/Text/Pandoc/Filter/Lua.hs | 38 | ||||
| -rw-r--r-- | src/Text/Pandoc/Lua/Filter.hs | 21 |
3 files changed, 16 insertions, 47 deletions
diff --git a/src/Text/Pandoc/Filter.hs b/src/Text/Pandoc/Filter.hs index 593aa7cba..8ab1347d1 100644 --- a/src/Text/Pandoc/Filter.hs +++ b/src/Text/Pandoc/Filter.hs @@ -30,7 +30,7 @@ import Text.Pandoc.Filter.Environment (Environment (..)) import Text.Pandoc.Logging import Text.Pandoc.Citeproc (processCitations) import qualified Text.Pandoc.Filter.JSON as JSONFilter -import qualified Text.Pandoc.Filter.Lua as LuaFilter +import qualified Text.Pandoc.Lua as LuaFilter import qualified Data.Text as T import System.FilePath (takeExtension) import Control.Applicative ((<|>)) @@ -86,7 +86,7 @@ applyFilters fenv filters args d = do applyFilter doc (JSONFilter f) = withMessages f $ JSONFilter.apply fenv args f doc applyFilter doc (LuaFilter f) = - withMessages f $ LuaFilter.apply fenv args f doc + withMessages f $ LuaFilter.applyFilter fenv args f doc applyFilter doc CiteprocFilter = processCitations doc withMessages f action = do diff --git a/src/Text/Pandoc/Filter/Lua.hs b/src/Text/Pandoc/Filter/Lua.hs deleted file mode 100644 index f1ea97e64..000000000 --- a/src/Text/Pandoc/Filter/Lua.hs +++ /dev/null @@ -1,38 +0,0 @@ -{- | - Module : Text.Pandoc.Filter.Lua - Copyright : Copyright (C) 2006-2022 John MacFarlane - License : GNU GPL, version 2 or above - - Maintainer : John MacFarlane <jgm@berkeley@edu> - Stability : alpha - Portability : portable - -Apply Lua filters to modify a pandoc documents programmatically. --} -module Text.Pandoc.Filter.Lua (apply) where - -import qualified Data.Text as T -import Text.Pandoc.Class (PandocMonad) -import Control.Monad.Trans (MonadIO) -import Text.Pandoc.Definition (Pandoc) -import Text.Pandoc.Filter.Environment (Environment (..)) -import Text.Pandoc.Lua (Global (..), applyFilter) - --- | Run the Lua filter in @filterPath@ for a transformation to the --- target format (first element in args). Pandoc uses Lua init files to --- setup the Lua interpreter. -apply :: (PandocMonad m, MonadIO m) - => Environment - -> [String] - -> FilePath - -> Pandoc - -> m Pandoc -apply fenv args fp doc = do - let format = case args of - (x:_) -> x - _ -> error "Format not supplied for Lua filter" - applyFilter [ FORMAT $ T.pack format - , PANDOC_READER_OPTIONS (envReaderOptions fenv) - , PANDOC_WRITER_OPTIONS (envWriterOptions fenv) - , PANDOC_SCRIPT_FILE fp - ] fp doc diff --git a/src/Text/Pandoc/Lua/Filter.hs b/src/Text/Pandoc/Lua/Filter.hs index b920f358d..31224042c 100644 --- a/src/Text/Pandoc/Lua/Filter.hs +++ b/src/Text/Pandoc/Lua/Filter.hs @@ -18,6 +18,7 @@ module Text.Pandoc.Lua.Filter import Control.Monad ((>=>), (<$!>)) import HsLua as Lua import Text.Pandoc.Definition +import Text.Pandoc.Filter.Environment (Environment (..)) import Text.Pandoc.Lua.ErrorConversion () import Text.Pandoc.Lua.Marshal.AST import Text.Pandoc.Lua.Marshal.Filter @@ -29,8 +30,6 @@ import Text.Pandoc.Class (PandocMonad) import Control.Monad.Trans (MonadIO) import Text.Pandoc.Error (PandocError (PandocFilterError, PandocLuaError)) - - -- | Transform document using the filter defined in the given file. runFilterFile :: FilePath -> Pandoc -> LuaE PandocError Pandoc runFilterFile filterPath doc = do @@ -56,11 +55,19 @@ runAll = foldr ((>=>) . applyFully) return -- target format (first element in args). Pandoc uses Lua init files to -- setup the Lua interpreter. applyFilter :: (PandocMonad m, MonadIO m) - => [Global] - -> FilePath - -> Pandoc - -> m Pandoc -applyFilter globals fp doc = do + => Environment + -> [String] + -> FilePath + -> Pandoc + -> m Pandoc +applyFilter fenv args fp doc = do + let globals = [ FORMAT $ case args of + x:_ -> T.pack x + _ -> "" + , PANDOC_READER_OPTIONS (envReaderOptions fenv) + , PANDOC_WRITER_OPTIONS (envWriterOptions fenv) + , PANDOC_SCRIPT_FILE fp + ] runLua >=> forceResult fp $ do setGlobals globals runFilterFile fp doc |
