corrade-nucleus-nucleons
/script-kiddie/002_script_kiddie/script-kiddie/node_modules/ace-builds/demo/kitchen-sink/docs/lua.lua |
@@ -0,0 +1,38 @@ |
--[[-- |
num_args takes in 5.1 byte code and extracts the number of arguments |
from its function header. |
--]]-- |
|
function int(t) |
return t:byte(1)+t:byte(2)*0x100+t:byte(3)*0x10000+t:byte(4)*0x1000000 |
end |
|
function num_args(func) |
local dump = string.dump(func) |
local offset, cursor = int(dump:sub(13)), offset + 26 |
--Get the params and var flag (whether there's a ... in the param) |
return dump:sub(cursor):byte(), dump:sub(cursor+1):byte() |
end |
|
-- Usage: |
num_args(function(a,b,c,d, ...) end) -- return 4, 7 |
|
-- Python styled string format operator |
local gm = debug.getmetatable("") |
|
gm.__mod=function(self, other) |
if type(other) ~= "table" then other = {other} end |
for i,v in ipairs(other) do other[i] = tostring(v) end |
return self:format(unpack(other)) |
end |
|
print([===[ |
blah blah %s, (%d %d) |
]===]%{"blah", num_args(int)}) |
|
--[=[-- |
table.maxn is deprecated, use # instead. |
--]=]-- |
print(table.maxn{1,2,[4]=4,[8]=8) -- outputs 8 instead of 2 |
|
print(5 --[[ blah ]]) |