aboutsummaryrefslogtreecommitdiff
path: root/gamemode/shared.lua
diff options
context:
space:
mode:
authorAlexander Pickering <alexandermpickering@gmail.com>2016-10-24 12:12:19 -0400
committerAlexander Pickering <alexandermpickering@gmail.com>2016-10-24 12:12:19 -0400
commit74c7a160da34897ebdf18aaff02b8c9b65809949 (patch)
treedb2a084d02f4acc3d7c99ec20e573101e448aef6 /gamemode/shared.lua
parentd7f44fc24da959658b597e64d842661aa41f6515 (diff)
downloadartery-74c7a160da34897ebdf18aaff02b8c9b65809949.tar.gz
artery-74c7a160da34897ebdf18aaff02b8c9b65809949.tar.bz2
artery-74c7a160da34897ebdf18aaff02b8c9b65809949.zip
Various other updates and bugfixes
Diffstat (limited to 'gamemode/shared.lua')
-rw-r--r--gamemode/shared.lua42
1 files changed, 42 insertions, 0 deletions
diff --git a/gamemode/shared.lua b/gamemode/shared.lua
index c69113f..8f8483f 100644
--- a/gamemode/shared.lua
+++ b/gamemode/shared.lua
@@ -12,10 +12,52 @@ GM.Email = "apickx@cogarr.org"
GM.Website = "cogarr.net"
--Some global functions that are helpful
+-- printf
+-- assertf
+-- curry
+-- typecheck
+
+--printf from C
function printf(fmt, ...)
print(string.format(fmt,...))
end
+--Assert with a formated string
+function assertf(cond, fmt, ...)
+ assert(cond,string.format(fmt,...))
+end
+
+--Curry from lisp, allows you to store variables "in" a function, so you can call it with fewer arguments if you'll be repeating arguments a lot
+--Ex:
+-- >dbprint = curry(print,"[Debug]")
+-- >dbprint("Hello, world!")
+-- [Debug] Hello, world!
+-- >
+function curry(fnc, ...)
+ local oarg = {...}
+ return function(...)
+ return fnc(unpack(oarg),unpack({...}))
+ end
+end
+
+--Does type checking for functions, use by supplying a table whith the variables and the types they should be
+--Ex:
+-- >local somefunction(str, tbl, num)
+-- >>typecheck({
+-- >> str,"string",
+-- >> tbl,"table",
+-- >> num,"number"
+-- >>})
+-- >
+function typecheck(...)
+ local tbl = {...}
+ tbl = type(tbl[1]) == "table" and tbl[1] or tbl
+ for k=1,#tbl,2 do
+ local t,n = type(tbl[k]),tbl[k+1]
+ assertf(t == n, "Passed argument of wrong type, should have been %q but was %q",t,n )
+ end
+end
+
--Add a thing to report errors to a master server
--TODO:Set up a master server to collect errors for correction
local olderr = error