Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local nType = type
- function type(x)
- if nType(x) == "table" then
- if getmetatable(x) and getmetatable(x).__type then
- return getmetatable(x).__type
- else
- return "table"
- end
- else
- return nType(x)
- end
- end
- local function get(x)
- if nType(x) == "table" and type(x) == "number" then
- return getmetatable(x).__value
- else
- return tonumber(x)
- end
- end
- function num(x)
- return setmetatable({},{__value=get(x) or 0,
- __type="number",
- __tostring=function(tble) return tonumber(getmetatable(tble).__value) end,
- __add=function(tble,value) return num(getmetatable(tble).__value + (get(value) or 0)) end,
- __sub=function(tble,value) return num(getmetatable(tble).__value - (get(value) or 0)) end,
- __mul=function(tble,value) return num(getmetatable(tble).__value * (get(value) or 1)) end,
- __div=function(tble,value) return num(getmetatable(tble).__value / (get(value) or 1)) end,
- __pow=function(tble,value) return num(getmetatable(tble).__value ^ (get(value) or 1)) end,
- __mod=function(tble,value) return num(getmetatable(tble).__value % (get(value) or 1)) end,
- __unm=function(tble) return num(-getmetatable(tble).__value) end,
- __index={num=function(tble) return tonumber(getmetatable(tble).__value) end},
- __call=function(tble) return setmetatable({},{__type="number",
- __tostring=function(ntble) return tonumber(getmetatable(tble).__value) end,
- __add=function(ntble,value) getmetatable(tble).__value=getmetatable(tble).__value + (get(value) or 0) return getmetatable(tble).__value end,
- __sub=function(ntble,value) getmetatable(tble).__value=getmetatable(tble).__value - (get(value) or 0) return getmetatable(tble).__value end,
- __mul=function(ntble,value) getmetatable(tble).__value=getmetatable(tble).__value * (get(value) or 1) return getmetatable(tble).__value end,
- __div=function(ntble,value) getmetatable(tble).__value=getmetatable(tble).__value / (get(value) or 1) return getmetatable(tble).__value end,
- __pow=function(ntble,value) getmetatable(tble).__value=getmetatable(tble).__value ^ (get(value) or 1) return getmetatable(tble).__value end,
- __mod=function(ntble,value) getmetatable(tble).__value=getmetatable(tble).__value % (get(value) or 1) return getmetatable(tble).__value end,
- __unm=function(ntble) getmetatable(tble).__value=-getmetatable(tble).__value return getmetatable(tble).__value end}) end,
- __index={num=function(tble) return tonumber(getmetatable(tble).__value) end},
- })
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement