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.

93 lines
2.2 KiB

--[[
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 })