8,756
edits
(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...") |
(readded splitargs) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
-- 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 ) | function p.gsplit( text, pattern, plain ) | ||
if not pattern then pattern = '%s*,%s*' end | if not pattern then pattern = '%s*,%s*' end | ||
Line 24: | Line 28: | ||
end | end | ||
end, nil, nil | end, nil, nil | ||
end | |||
function p.splitNonempty(text, pattern, plain) | |||
if text == '' then | |||
return {} | |||
end | |||
return p.split(text, pattern, plain) | |||
end | |||
function p.splitOrNil(text, pattern, plain) | |||
if text == '' or not text then | |||
return nil | |||
end | |||
return p.split(text, pattern, plain) | |||
end | end | ||
Line 35: | Line 53: | ||
end | end | ||
return ret | return ret | ||
end | |||
function p.splitIfString(str, sep, plain) | |||
if type(str) == 'table' then | |||
return str | |||
end | |||
return p.split(str, sep, plain) | |||
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.escapeCustom(link, tbl) | |||
for k, v in pairs(tbl) do | |||
link = link:gsub(k, v) | |||
end | |||
return link | |||
end | |||
function p.nextLetter(char) | |||
return string.char(char:byte() + 1) | |||
end | |||
function p.extLink(link, text) | |||
if link == '' then link = nil end | |||
if not link then | |||
return | |||
end | |||
return ('[%s %s]'):format(link, text or 'Link') | |||
end | |||
function p.intLink(link, text) | |||
if link == '' then link = nil end | |||
if not link and not text then | |||
return | |||
end | |||
return ('[[%s|%s]]'):format(link or text, text or 'Link') | |||
end | |||
function p.link(link, text) | |||
if link:find('http') then | |||
return p.extLink(link, text) | |||
else | |||
return p.intLink(link, text) | |||
end | |||
end | |||
function p.extLinkOrText(link, text) | |||
if link == '' then link = nil end | |||
if not link then return text end | |||
return ('[%s %s]'):format(link, text or link) | |||
end | |||
function p.intLinkOrText(link, text) | |||
if link == '' then link = nil end | |||
if not link then return text end | |||
return ('[[%s|%s]]'):format(link, text or link) | |||
end | |||
function p.linkOrText(link, text) | |||
if link:find('http') then | |||
return p.extLinkOrText(link, text) | |||
else | |||
return p.intLinkOrText(link, text) | |||
end | |||
end | |||
function p.ucFirstOnly(str) | |||
if not str then return end | |||
return mw.getLanguage('en'):ucfirst(str:lower()) | |||
end | |||
function p.ucfirst(str) | |||
if not str then return end | |||
return mw.getLanguage('en'):ucfirst(str) | |||
end | |||
function p.lcfirst(str) | |||
if not str then return end | |||
return mw.getLanguage('en'):lcfirst(str) | |||
end | |||
function p.possessive(str, literal) | |||
if (literal or str):find('s$') then | |||
return str .. "'" | |||
end | |||
return str .. "'s" | |||
end | end | ||
Line 52: | Line 171: | ||
return result | return result | ||
end | end | ||
return p |