Module:Text: Difference between revisions
From Downtime Wiki
MC>MarkusRost m Protected "Module:Text": High traffic page ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) |
Created page with "-- 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..." |
(No difference)
|
Revision as of 03:51, 25 April 2025
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