@@ -1,4 +1,5 @@
11{-# LANGUAGE FlexibleContexts #-}
2+{-# LANGUAGE LambdaCase #-}
23{-# LANGUAGE ScopedTypeVariables #-}
34{- |
45 Module : Text.Pandoc.Lua.Packages
@@ -14,9 +15,11 @@ module Text.Pandoc.Lua.Packages
1415 ( installPandocPackageSearcher
1516 ) where
1617
18+import Control.Monad.Catch (try)
1719import Control.Monad (forM_)
1820import Data.ByteString (ByteString)
1921import Foreign.Lua (Lua, NumResults)
22+import Text.Pandoc.Error (PandocError)
2023import Text.Pandoc.Class.PandocMonad (readDataFile)
2124import Text.Pandoc.Lua.PandocLua (PandocLua, liftPandocLua)
2225
@@ -58,8 +61,11 @@ pandocPackageSearcher pkgName =
5861 return 1
5962 searchPureLuaLoader = do
6063 let filename = pkgName ++ ".lua"
61− script <- readDataFile filename
62− pushWrappedHsFun (loadStringAsPackage pkgName script)
64+ try (readDataFile filename) >>= \case
65+ Right script -> pushWrappedHsFun (loadStringAsPackage pkgName script)
66+ Left (_ :: PandocError) -> liftPandocLua $ do
67+ Lua.push ("\n\tno file '" ++ filename ++ "' in pandoc's datadir")
68+ return (1 :: NumResults)
6369
6470loadStringAsPackage :: String -> ByteString -> Lua NumResults
6571loadStringAsPackage pkgName script = do