Call of Duty Esports Wiki
[checked revision][checked revision]
Donut (talk | contribs)
(Created page with "-- Source for gsplit, split, and trim: https://phabricator.wikimedia.org/diffusion/ELUA/browse/master/includes/engines/LuaCommon/lualib/mw.text.lua local p = {} function p.gs...")
 
Donut (talk | contribs)
No edit summary
Line 5: Line 5:
 
local s, l = 1, text:len()
 
local s, l = 1, text:len()
 
return function ()
 
return function ()
−
if s then
+
if s then
−
local e, n = text:find( pattern, s, plain )
+
local e, n = text:find( pattern, s, plain )
−
local ret
+
local ret
−
if not e then
+
if not e then
−
ret = text:sub( s )
+
ret = text:sub( s )
−
s = nil
+
s = nil
−
elseif n < e then
+
elseif n < e then
−
-- Empty separator!
+
-- Empty separator!
−
ret = text:sub( s, e )
+
ret = text:sub( s, e )
−
if e < l then
+
if e < l then
−
s = e + 1
+
s = e + 1
−
else
+
else
−
s = nil
+
s = nil
 
end
 
else
 
ret = e > s and text:sub( s, e - 1 ) or ''
 
s = n + 1
 
end
 
return ret
 
end
 
end
else
 
ret = e > s and text:sub( s, e - 1 ) or ''
 
s = n + 1
 
end
 
return ret
 
end
 
 
end, nil, nil
 
end, nil, nil
 
end
 
end
Line 31: Line 31:
 
local ret = {}
 
local ret = {}
 
for m in p.gsplit( text, pattern, plain ) do
 
for m in p.gsplit( text, pattern, plain ) do
−
ret[#ret+1] = m
+
ret[#ret+1] = m
 
end
 
end
 
return ret
 
return ret

Revision as of 04:28, 6 December 2018

To edit the documentation or categories for this module, click here.


-- Source for gsplit, split, and trim: 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

function p.escape(link)
	link = link or ''
	-- because of gsub not letting you have - unescaped
	link = string.gsub(link,'%-','%%%-')
	link = string.gsub(link,'%(','%%%(')
	link = string.gsub(link,'%)','%%%)')
	link = string.gsub(link,'%+','%%%+')
	return link
end

function p.nextLetter(char)
	return string.char(char:byte() + 1)
end

function p.serializeNumber(N)
	local chr = tostring(N):sub(-1)
	local lookup = { ['1'] = 'st', ['2'] = 'nd', ['3'] = 'rd' }
	return N .. (lookup[chr] or 'th')
end

return p