dotfiles from arch
This commit is contained in:
@@ -0,0 +1,126 @@
|
||||
local m = {}
|
||||
|
||||
local mt = {}
|
||||
mt.__add = function (a, b)
|
||||
if a == nil then a = 0 end
|
||||
if b == nil then b = 0 end
|
||||
return a + b
|
||||
end
|
||||
mt.__sub = function (a, b)
|
||||
if a == nil then a = 0 end
|
||||
if b == nil then b = 0 end
|
||||
return a - b
|
||||
end
|
||||
mt.__mul = function (a, b)
|
||||
if a == nil then a = 0 end
|
||||
if b == nil then b = 0 end
|
||||
return a * b
|
||||
end
|
||||
mt.__div = function (a, b)
|
||||
if a == nil then a = 0 end
|
||||
if b == nil then b = 0 end
|
||||
return a / b
|
||||
end
|
||||
mt.__mod = function (a, b)
|
||||
if a == nil then a = 0 end
|
||||
if b == nil then b = 0 end
|
||||
return a % b
|
||||
end
|
||||
mt.__pow = function (a, b)
|
||||
if a == nil then a = 0 end
|
||||
if b == nil then b = 0 end
|
||||
return a ^ b
|
||||
end
|
||||
mt.__unm = function ()
|
||||
return 0
|
||||
end
|
||||
mt.__concat = function (a, b)
|
||||
if a == nil then a = '' end
|
||||
if b == nil then b = '' end
|
||||
return a .. b
|
||||
end
|
||||
mt.__len = function ()
|
||||
return 0
|
||||
end
|
||||
mt.__lt = function (a, b)
|
||||
if a == nil then a = 0 end
|
||||
if b == nil then b = 0 end
|
||||
return a < b
|
||||
end
|
||||
mt.__le = function (a, b)
|
||||
if a == nil then a = 0 end
|
||||
if b == nil then b = 0 end
|
||||
return a <= b
|
||||
end
|
||||
mt.__index = function () end
|
||||
mt.__newindex = function () end
|
||||
mt.__call = function () end
|
||||
mt.__pairs = function () end
|
||||
mt.__ipairs = function () end
|
||||
if _VERSION == 'Lua 5.3' or _VERSION == 'Lua 5.4' then
|
||||
mt.__idiv = load[[
|
||||
local a, b = ...
|
||||
if a == nil then a = 0 end
|
||||
if b == nil then b = 0 end
|
||||
return a // b
|
||||
]]
|
||||
mt.__band = load[[
|
||||
local a, b = ...
|
||||
if a == nil then a = 0 end
|
||||
if b == nil then b = 0 end
|
||||
return a & b
|
||||
]]
|
||||
mt.__bor = load[[
|
||||
local a, b = ...
|
||||
if a == nil then a = 0 end
|
||||
if b == nil then b = 0 end
|
||||
return a | b
|
||||
]]
|
||||
mt.__bxor = load[[
|
||||
local a, b = ...
|
||||
if a == nil then a = 0 end
|
||||
if b == nil then b = 0 end
|
||||
return a ~ b
|
||||
]]
|
||||
mt.__bnot = load[[
|
||||
return ~ 0
|
||||
]]
|
||||
mt.__shl = load[[
|
||||
local a, b = ...
|
||||
if a == nil then a = 0 end
|
||||
if b == nil then b = 0 end
|
||||
return a << b
|
||||
]]
|
||||
mt.__shr = load[[
|
||||
local a, b = ...
|
||||
if a == nil then a = 0 end
|
||||
if b == nil then b = 0 end
|
||||
return a >> b
|
||||
]]
|
||||
end
|
||||
|
||||
for event, func in pairs(mt) do
|
||||
mt[event] = function (...)
|
||||
local watch = m.watch
|
||||
if not watch then
|
||||
return func(...)
|
||||
end
|
||||
local care, result = watch(event, ...)
|
||||
if not care then
|
||||
return func(...)
|
||||
end
|
||||
return result
|
||||
end
|
||||
end
|
||||
|
||||
function m.enable()
|
||||
debug.setmetatable(nil, mt)
|
||||
end
|
||||
|
||||
function m.disable()
|
||||
if debug.getmetatable(nil) == mt then
|
||||
debug.setmetatable(nil, nil)
|
||||
end
|
||||
end
|
||||
|
||||
return m
|
||||
Reference in New Issue
Block a user