aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlbert Krewinkel <[email protected]>2022-09-29 12:55:26 +0200
committerJohn MacFarlane <[email protected]>2022-09-30 08:33:40 -0700
commit04902d26dade413c91dd098b1659f3f817d0adcb (patch)
tree527c793d92b9867ac7ccbf3e6e15421ffa8b0167 /src
parent0e947c747369dce55f5c5c69532835776f7903f9 (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.hs4
-rw-r--r--src/Text/Pandoc/Filter/Lua.hs38
-rw-r--r--src/Text/Pandoc/Lua/Filter.hs21
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