otclient-redemption/modules/corelib/string.lua
Rodrigo Paixão 1c3abadd2f
feat: new layout (#749)
New layout based on client 13+.

---------

Co-authored-by: kokekanon <114332266+kokekanon@users.noreply.github.com>
Co-authored-by: Luan Luciano <luanluciano@outlook.com>
Co-authored-by: Levi999x <perkic-marko7@t-online.de>
Co-authored-by: SkullzOTS <86809689+SkullzOTS@users.noreply.github.com>
Co-authored-by: Renato Machado <mehahx@gmail.com>
2024-06-21 18:10:07 -03:00

76 lines
No EOL
1.9 KiB
Lua

-- @docclass string
function string:split(delim)
local start = 1
local results = {}
while true do
local pos = string.find(self, delim, start, true)
if not pos then
break
end
table.insert(results, string.sub(self, start, pos - 1))
start = pos + string.len(delim)
end
table.insert(results, string.sub(self, start))
table.removevalue(results, '')
return results
end
function string:starts(start)
return string.sub(self, 1, #start) == start
end
function string:ends(test)
return test == '' or string.sub(self, -string.len(test)) == test
end
function string:trim()
return string.match(self, '^%s*(.*%S)') or ''
end
function string:explode(sep, limit)
if type(sep) ~= 'string' or tostring(self):len() == 0 or sep:len() == 0 then
return {}
end
local i, pos, tmp, t = 0, 1, '', {}
for s, e in function()
return string.find(self, sep, pos)
end do
tmp = self:sub(pos, s - 1):trim()
table.insert(t, tmp)
pos = e + 1
i = i + 1
if limit ~= nil and i == limit then
break
end
end
tmp = self:sub(pos):trim()
table.insert(t, tmp)
return t
end
function string:contains(str, checkCase, start, plain)
if (not checkCase) then
self = self:lower()
str = str:lower()
end
return string.find(self, str, start and start or 1, plain == nil and true or false)
end
function string:wrap(width)
local wrapped = ""
local lineWidth = 0
for word in self:gmatch("%S+") do
local wordWidth = #word * 10 -- Assuming each character is 10 pixels wide
if lineWidth + wordWidth > width then
wrapped = wrapped .. "\n" .. word .. " "
lineWidth = wordWidth + 1
else
wrapped = wrapped .. word .. " "
lineWidth = lineWidth + wordWidth + 1
end
end
return wrapped
end