forked from ggcrunchy/solar2d-snippets
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patherrors.lua
78 lines (63 loc) · 2.3 KB
/
errors.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
--- Various error-related utilities.
--
-- Permission is hereby granted, free of charge, to any person obtaining
-- a copy of this software and associated documentation files (the
-- "Software"), to deal in the Software without restriction, including
-- without limitation the rights to use, copy, modify, merge, publish,
-- distribute, sublicense, and/or sell copies of the Software, and to
-- permit persons to whom the Software is furnished to do so, subject to
-- the following conditions:
--
-- The above copyright notice and this permission notice shall be
-- included in all copies or substantial portions of the Software.
--
-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--
-- [ MIT license: http://www.opensource.org/licenses/mit-license.php ]
--
-- Standard library imports --
local assert = assert
-- Modules --
local var_preds = require("var_preds")
-- Imports --
local IsCallable = var_preds.IsCallable
-- Exports --
local M = {}
-- Last traceback --
local LastTraceback
-- Traceback function --
local TracebackFunc
--- Gets the last stored traceback.
-- @bool clear Clear the traceback after retrieval?
-- @treturn string Traceback string, or **nil** if absent.
function M.GetLastTraceback (clear)
local traceback = LastTraceback
if clear then
LastTraceback = nil
end
return traceback
end
--- Sets the traceback function.
-- @callable func Function to assign, or **nil** for default.
--
-- The function should return either the traceback string or **nil**.
function M.SetTracebackFunc (func)
assert(func == nil or IsCallable(func), "Uncallable traceback function")
TracebackFunc = func
end
-- Default traceback: no-op
local function DefaultTraceback () end
--- Stores the current traceback.
-- @param ... Arguments to traceback function.
-- @see GetLastTraceback
function M.StoreTraceback (...)
LastTraceback = (TracebackFunc or DefaultTraceback)(...)
end
-- Export the module.
return M