diff options
author | Albert Krewinkel <albert@zeitkraut.de> | 2018-01-12 21:26:34 +0100 |
---|---|---|
committer | Albert Krewinkel <albert@zeitkraut.de> | 2018-01-12 21:28:27 +0100 |
commit | 6528082401100cd8ef26c8dc3e953b960a997827 (patch) | |
tree | 3ab3cd0658d9f8ecef55ac5ebe684717c3c14763 /src/Text/Pandoc/Lua/Util.hs | |
parent | f130109b90d4f369a6d8d03c7a520e95db2e0d1f (diff) | |
download | pandoc-6528082401100cd8ef26c8dc3e953b960a997827.tar.gz |
Lua filters: improve error messages
Provide more context about the task which caused an error.
Diffstat (limited to 'src/Text/Pandoc/Lua/Util.hs')
-rw-r--r-- | src/Text/Pandoc/Lua/Util.hs | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/Text/Pandoc/Lua/Util.hs b/src/Text/Pandoc/Lua/Util.hs index 799b45b72..a3af155c9 100644 --- a/src/Text/Pandoc/Lua/Util.hs +++ b/src/Text/Pandoc/Lua/Util.hs @@ -36,6 +36,7 @@ module Text.Pandoc.Lua.Util , getRawInt , setRawInt , addRawInt + , typeCheck , raiseError , popValue , PushViaCall @@ -100,6 +101,14 @@ setRawInt idx key value = do addRawInt :: ToLuaStack a => Int -> a -> Lua () addRawInt = setRawInt (-1) +typeCheck :: StackIndex -> Lua.Type -> Lua () +typeCheck idx expected = do + actual <- Lua.ltype idx + when (actual /= expected) $ do + expName <- Lua.typename expected + actName <- Lua.typename actual + Lua.throwLuaError $ "expected " ++ expName ++ " but got " ++ actName ++ "." + raiseError :: ToLuaStack a => a -> Lua NumResults raiseError e = do Lua.push e |