Esta é uma cópia exata das funções built-in mw.text.gsplit
, mw.text.split
, e mw.text.trim
, apenas usando a biblioteca de strings significativamente mais rápido em vez da biblioteca ustring. Como tal, isso não funcionará corretamente se você estiver tentando dividir uma string por caracteres unicode ou aparar caracteres unicode de uma string. Caracteres Unicode que estão na string devem ser bons.
[ver | editar | histórico | purgar]A documentação acima é transcluída de Módulo: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 )
charset = charset or '\t\r\n\f '
s = s:gsub( '^[' .. charset .. ']*(.-)[' .. charset .. ']*$', '%1' )
return s
end
return p