120 lines
3.0 KiB
Lua
120 lines
3.0 KiB
Lua
local splitString = function(str, sep)
|
|
if sep == nil then
|
|
sep = "%s"
|
|
end
|
|
local t={}
|
|
for v in string.gmatch(str, "([^"..sep.."]+)") do
|
|
table.insert(t, v)
|
|
end
|
|
return t
|
|
end
|
|
|
|
return {
|
|
getTextHorizontalAlign = function(text, width, textAlign, replaceChar)
|
|
text = string.sub(text, 1, width)
|
|
local offset = width - string.len(text)
|
|
if (textAlign == "right") then
|
|
text = string.rep(replaceChar or " ", offset) .. text
|
|
elseif (textAlign == "center") then
|
|
text = string.rep(replaceChar or " ", math.floor(offset / 2)) .. text .. string.rep(replaceChar or " ", math.floor(offset / 2))
|
|
text = text .. (string.len(text) < width and (replaceChar or " ") or "")
|
|
else
|
|
text = text .. string.rep(replaceChar or " ", offset)
|
|
end
|
|
return text
|
|
end,
|
|
|
|
getTextVerticalAlign = function(h, textAlign)
|
|
local offset = 0
|
|
if (textAlign == "center") then
|
|
offset = math.ceil(h / 2)
|
|
if (offset < 1) then
|
|
offset = 1
|
|
end
|
|
end
|
|
if (textAlign == "bottom") then
|
|
offset = h
|
|
end
|
|
if(offset<1)then offset=1 end
|
|
return offset
|
|
end,
|
|
|
|
rpairs = function(t)
|
|
return function(t, i)
|
|
i = i - 1
|
|
if i ~= 0 then
|
|
return i, t[i]
|
|
end
|
|
end, t, #t + 1
|
|
end,
|
|
|
|
tableCount = function(t)
|
|
local n = 0
|
|
if(t~=nil)then
|
|
for k,v in pairs(t)do
|
|
n = n + 1
|
|
end
|
|
end
|
|
return n
|
|
end,
|
|
|
|
splitString = splitString,
|
|
|
|
createText = function(str, width)
|
|
local uniqueLines = splitString(str, "\n")
|
|
local lines = {}
|
|
for k,v in pairs(uniqueLines)do
|
|
local line = ""
|
|
local words = splitString(v, " ")
|
|
for a,b in pairs(words)do
|
|
if(#line+#b <= width)then
|
|
line = line=="" and b or line.." "..b
|
|
if(a==#words)then table.insert(lines, line) end
|
|
else
|
|
table.insert(lines, line)
|
|
line = b:sub(1,width)
|
|
if(a==#words)then table.insert(lines, line) end
|
|
end
|
|
end
|
|
end
|
|
return lines
|
|
end,
|
|
|
|
getValueFromXML = function(name, tab)
|
|
local var
|
|
if(type(tab)~="table")then return end
|
|
if(tab[name]~=nil)then
|
|
if(type(tab[name])=="table")then
|
|
if(tab[name].value~=nil)then
|
|
var = tab[name]:value()
|
|
end
|
|
end
|
|
end
|
|
if(var==nil)then var = tab["@"..name] end
|
|
|
|
if(var=="true")then
|
|
var = true
|
|
elseif(var=="false")then
|
|
var = false
|
|
elseif(tonumber(var)~=nil)then
|
|
var = tonumber(var)
|
|
end
|
|
return var
|
|
end,
|
|
|
|
numberFromString = function(str)
|
|
return load("return " .. str)()
|
|
end,
|
|
|
|
uuid = function()
|
|
local random = math.random
|
|
local function uuid()
|
|
local template ='xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'
|
|
return string.gsub(template, '[xy]', function (c)
|
|
local v = (c == 'x') and random(0, 0xf) or random(8, 0xb)
|
|
return string.format('%x', v)
|
|
end)
|
|
end
|
|
return uuid()
|
|
end,
|
|
} |