Module:Text Utility: Difference between revisions
Jump to navigation
Jump to search
(Created page with "function p.gsplit( text, pattern, plain ) if not pattern then pattern = '%s*,%s*' end local s, l = 1, text:len() return function () if s then local e, n = text:find( p...") |
mNo edit summary |
||
Line 1: | Line 1: | ||
local p = {} | |||
function p.gsplit( text, pattern, plain ) | function p.gsplit( text, pattern, plain ) | ||
if not pattern then pattern = '%s*,%s*' end | if not pattern then pattern = '%s*,%s*' end | ||
Line 52: | Line 53: | ||
return result | return result | ||
end | end | ||
return p |
Revision as of 22:10, 15 November 2019
Taken from LoL's own TextUtil module.
local p = {}
function p.gsplit( text, pattern, plain )
if not pattern then pattern = '%s*,%s*' end
local s, l = 1, text:len()
return function ()
if s then
local e, n = text:find( pattern, s, plain )
local ret
if not e then
ret = text:sub( s )
s = nil
elseif n < e then
-- Empty separator!
ret = text:sub( s, e )
if e < l then
s = e + 1
else
s = nil
end
else
ret = e > s and text:sub( s, e - 1 ) or ''
s = n + 1
end
return ret
end
end, nil, nil
end
function p.split(text, pattern, plain)
if not text then
return {}
end
local ret = {}
for m in p.gsplit(text, pattern, plain) do
ret[#ret+1] = m
end
return ret
end
function p.splitArgs(input, fieldlist, sep)
if not input or input == '' then return end
sep = sep or '%s*;;;%s*'
local result = {}
local inputTbl = p.split(input,sep)
for i, v in ipairs(fieldlist) do
if not inputTbl[i] then
error(('Missing parameter %s - maybe wrong child template?'):format(v))
end
if inputTbl[i] ~= '' then
result[v] = inputTbl[i]
end
end
return result
end
return p