@@ -33,19 +33,14 @@ module Text.Pandoc.Filter.Lua (apply) where
3333import Prelude
3434import Control.Exception (throw)
3535import Control.Monad ((>=>))
36−import Foreign.Lua (Lua)
3736import Text.Pandoc.Class (PandocIO)
3837import Text.Pandoc.Definition (Pandoc)
3938import Text.Pandoc.Error (PandocError (PandocFilterError))
4039import Text.Pandoc.Filter.Path (expandFilterPath)
41−import Text.Pandoc.Lua (LuaException (..), runLua)
42−import Text.Pandoc.Lua.Filter (LuaFilter, walkMWithLuaFilter)
43−import Text.Pandoc.Lua.Global (Global (..), setGlobals)
44−import Text.Pandoc.Lua.Util (dofileWithTraceback)
40+import Text.Pandoc.Lua (Global (..), LuaException (..),
41+ runLua, runFilterFile, setGlobals)
4542import Text.Pandoc.Options (ReaderOptions)
4643
47−import qualified Foreign.Lua as Lua
48−
4944-- | Run the Lua filter in @filterPath@ for a transformation to the
5045-- target format (first element in args). Pandoc uses Lua init files to
5146-- setup the Lua interpreter.
@@ -64,23 +59,9 @@ apply ropts args f doc = do
6459 , PANDOC_READER_OPTIONS ropts
6560 , PANDOC_SCRIPT_FILE filterPath
6661 ]
67− top <- Lua.gettop
68− stat <- dofileWithTraceback filterPath
69− if stat /= Lua.OK
70− then Lua.throwTopMessage
71− else do
72− newtop <- Lua.gettop
73− -- Use the returned filters, or the implicitly defined global
74− -- filter if nothing was returned.
75− luaFilters <- if newtop - top >= 1
76− then Lua.peek Lua.stackTop
77− else Lua.pushglobaltable *> fmap (:[]) Lua.popValue
78− runAll luaFilters doc
62+ runFilterFile filterPath doc
7963
8064forceResult :: FilePath -> Either LuaException Pandoc -> PandocIO Pandoc
8165forceResult fp eitherResult = case eitherResult of
8266 Right x -> return x
8367 Left (LuaException s) -> throw (PandocFilterError fp s)
84−
85−runAll :: [LuaFilter] -> Pandoc -> Lua Pandoc
86−runAll = foldr ((>=>) . walkMWithLuaFilter) return