You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
2.2 KiB
94 lines
2.2 KiB
|
3 years ago
|
--[[
|
||
|
|
wowmock - WoW environment mock
|
||
|
|
Copyright 2014 Adirelle (adirelle@gmail.com)
|
||
|
|
See LICENSE for usage.
|
||
|
|
--]]
|
||
|
|
|
||
|
|
local function strsplit(delim, str, count)
|
||
|
|
if count and count <= 1 then return str end
|
||
|
|
local a, b = str:find(delim, 1, true)
|
||
|
|
if not a then return str end
|
||
|
|
return str:sub(1, a-1), strsplit(delim, str:sub(b+1), count and (count-1))
|
||
|
|
end
|
||
|
|
|
||
|
|
local t = {}
|
||
|
|
local function strjoin(delim, ...)
|
||
|
|
for i = 1, select('#', ...) do
|
||
|
|
t[i] = select(i, ...)
|
||
|
|
end
|
||
|
|
return table.concat(t, delim, 1, select('#', ...))
|
||
|
|
end
|
||
|
|
|
||
|
|
local function strconcat(...)
|
||
|
|
return strjoin("", ...)
|
||
|
|
end
|
||
|
|
|
||
|
|
local function tContains(t, value)
|
||
|
|
for k, v in pairs(t) do
|
||
|
|
if v == value then
|
||
|
|
return true
|
||
|
|
end
|
||
|
|
end
|
||
|
|
return false
|
||
|
|
end
|
||
|
|
|
||
|
|
local function tostringall(...)
|
||
|
|
if select('#', ...) > 0 then
|
||
|
|
return tostring(...), tostringall(select(2, ...))
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
local function strtrim(str, chars)
|
||
|
|
if not chars then
|
||
|
|
chars = " \r\n"
|
||
|
|
end
|
||
|
|
local re = '['..chars:gsub("([%]%.%^%-%%])", "%%%1")..']*'
|
||
|
|
return str:gsub('^'..re, ''):gsub(re..'$', '')
|
||
|
|
end
|
||
|
|
|
||
|
|
local function wipe(t)
|
||
|
|
for k in pairs(t) do
|
||
|
|
t[k] = nil
|
||
|
|
end
|
||
|
|
return t
|
||
|
|
end
|
||
|
|
|
||
|
|
local funcs = {
|
||
|
|
format = string.format,
|
||
|
|
gsub = string.gsub,
|
||
|
|
strsplit = strsplit,
|
||
|
|
strjoin = strjoin,
|
||
|
|
strconcat = strconcat,
|
||
|
|
strtrim = strtrim,
|
||
|
|
tostringall = tostringall,
|
||
|
|
|
||
|
|
tinsert = table.insert,
|
||
|
|
tremove = table.remove,
|
||
|
|
tconcat = table.concat,
|
||
|
|
tContains = tContains,
|
||
|
|
tconcat = table.concat,
|
||
|
|
sort = table.sort,
|
||
|
|
wipe = wipe,
|
||
|
|
|
||
|
|
acos = function(value) return math.deg(math.acos(value)) end,
|
||
|
|
asin = function(value) return math.deg(math.asin(value)) end,
|
||
|
|
atan = function(value) return math.deg(math.atan(value)) end,
|
||
|
|
atan2 = function(y, x) return math.deg(math.atan2(y, x)) end,
|
||
|
|
cos = function(degrees) return math.cos(math.rad(degrees)) end,
|
||
|
|
sin = function(degrees) return math.sin(math.rad(degrees)) end,
|
||
|
|
tan = function(degrees) return math.tan(math.rad(degrees)) end,
|
||
|
|
|
||
|
|
bit = assert(require('bit'), 'Either bitlib or luabitop is required.')
|
||
|
|
}
|
||
|
|
|
||
|
|
for key, func in pairs(string) do
|
||
|
|
funcs["str"..key] = func
|
||
|
|
end
|
||
|
|
for key, func in pairs(math) do
|
||
|
|
if not funcs[key] then
|
||
|
|
funcs[key] = func
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
return setmetatable(funcs, { __index = _G })
|