pandoc-lua-engine 0.5.0.1 → 0.5.0.2
raw patch · 2 files changed
+15/−8 lines, 2 filesdep ~citeproc
Dependency ranges changed: citeproc
Files
- pandoc-lua-engine.cabal +2/−2
- src/Text/Pandoc/Lua/Custom.hs +13/−6
pandoc-lua-engine.cabal view
@@ -1,6 +1,6 @@ cabal-version: 2.4 name: pandoc-lua-engine-version: 0.5.0.1+version: 0.5.0.2 build-type: Simple license: GPL-2.0-or-later license-file: COPYING.md@@ -111,7 +111,7 @@ build-depends: aeson , bytestring >= 0.9 && < 0.13 , crypton >= 0.30 && < 1.1- , citeproc >= 0.8 && < 0.12+ , citeproc >= 0.8 && < 0.13 , containers >= 0.6.0.1 && < 0.9 , data-default >= 0.4 && < 0.9 , doclayout >= 0.5 && < 0.6
src/Text/Pandoc/Lua/Custom.hs view
@@ -148,12 +148,19 @@ writerField :: Name writerField = "Pandoc Writer function" --- | Runs a Lua action in a continueable environment.-inLua :: MonadIO m => GCManagedState -> LuaE PandocError a -> m a-inLua st = liftIO . withGCManagedState @PandocError st+-- | Runs a Lua action in a continuable environment and transfers the common+-- state after the Lua action has finished.+inLua :: (PandocMonad m, MonadIO m)+ => GCManagedState -> LuaE PandocError a -> m a+inLua st luaAction = do+ let inLua' = liftIO . withGCManagedState @PandocError st+ result <- inLua' luaAction+ cstate <- inLua' (unPandocLua PandocMonad.getCommonState)+ PandocMonad.putCommonState cstate+ return result -- | Returns the ByteStringReader function-byteStringReader :: MonadIO m => GCManagedState -> Reader m+byteStringReader :: (PandocMonad m, MonadIO m) => GCManagedState -> Reader m byteStringReader st = ByteStringReader $ \ropts input -> inLua st $ do getfield registryindex readerField push input@@ -163,12 +170,12 @@ _ -> throwErrorAsException -- | Returns the TextReader function-textReader :: MonadIO m => GCManagedState -> Reader m+textReader :: (PandocMonad m, MonadIO m) => GCManagedState -> Reader m textReader st = TextReader $ \ropts srcs -> inLua st $ do let input = toSources srcs getfield registryindex readerField push input push ropts pcallTrace 2 1 >>= \case- OK -> forcePeek $ peekPandoc top+ OK -> forcePeek (peekPandoc top) _ -> throwErrorAsException