diff options
author | Albert Krewinkel <albert@zeitkraut.de> | 2020-05-12 17:10:30 +0200 |
---|---|---|
committer | Albert Krewinkel <albert@zeitkraut.de> | 2020-05-12 17:10:30 +0200 |
commit | 9c76c52e9bb1481234b8ee5ef9c524a5a61d43bd (patch) | |
tree | 7690471698a0ed277146092b32371709f29c2b69 /src/Text/Pandoc/Lua | |
parent | 82eb4df284cd9f0f62836df9aea6f1aab0ed63e2 (diff) | |
download | pandoc-9c76c52e9bb1481234b8ee5ef9c524a5a61d43bd.tar.gz |
Lua: fix regression in package searcher
This caused `require 'module'` to fail for third party packages.
Fixes: #6361
Diffstat (limited to 'src/Text/Pandoc/Lua')
-rw-r--r-- | src/Text/Pandoc/Lua/Packages.hs | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/Text/Pandoc/Lua/Packages.hs b/src/Text/Pandoc/Lua/Packages.hs index 79d42a6d7..4c3b9d79d 100644 --- a/src/Text/Pandoc/Lua/Packages.hs +++ b/src/Text/Pandoc/Lua/Packages.hs @@ -1,4 +1,5 @@ {-# LANGUAGE FlexibleContexts #-} +{-# LANGUAGE LambdaCase #-} {-# LANGUAGE ScopedTypeVariables #-} {- | Module : Text.Pandoc.Lua.Packages @@ -14,9 +15,11 @@ module Text.Pandoc.Lua.Packages ( installPandocPackageSearcher ) where +import Control.Monad.Catch (try) import Control.Monad (forM_) import Data.ByteString (ByteString) import Foreign.Lua (Lua, NumResults) +import Text.Pandoc.Error (PandocError) import Text.Pandoc.Class.PandocMonad (readDataFile) import Text.Pandoc.Lua.PandocLua (PandocLua, liftPandocLua) @@ -58,8 +61,11 @@ pandocPackageSearcher pkgName = return 1 searchPureLuaLoader = do let filename = pkgName ++ ".lua" - script <- readDataFile filename - pushWrappedHsFun (loadStringAsPackage pkgName script) + try (readDataFile filename) >>= \case + Right script -> pushWrappedHsFun (loadStringAsPackage pkgName script) + Left (_ :: PandocError) -> liftPandocLua $ do + Lua.push ("\n\tno file '" ++ filename ++ "' in pandoc's datadir") + return (1 :: NumResults) loadStringAsPackage :: String -> ByteString -> Lua NumResults loadStringAsPackage pkgName script = do |