More actions
Documentation for this module may be created at Module:Text/doc
-- Source: https://phabricator.wikimedia.org/diffusion/ELUA/browse/master/includes/Engines/LuaCommon/lualib/mw.text.lua
local p = {}
function p.gsplit( text, pattern, plain )
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 )
local ret = {}
for m in p.gsplit( text, pattern, plain ) do
ret[#ret+1] = m
end
return ret
end
function p.trim( s, charset )
if not charset then
return string.match( s, '^()%s*$' ) and '' or string.match( s, '^%s*(.*%S)' )
else
return ( string.gsub( s, '^[' .. charset .. ']*(.-)[' .. charset .. ']*$', '%1' ) )
end
end
return p