Module:Text Utility: Difference between revisions

Jump to navigation Jump to search
2,039 bytes added ,  20:23, 28 December 2019
no edit summary
mNo edit summary
No edit summary
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 = {}
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 25: 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 38: Line 55:
end
end


function p.splitArgs(input, fieldlist, sep)
function p.splitIfString(str, sep, plain)
    if not input or input == '' then return end
if type(str) == 'table' then
    sep = sep or '%s*;;;%s*'
return str
    local result = {}
end
    local inputTbl = p.split(input,sep)
return p.split(str, sep, plain)
    for i, v in ipairs(fieldlist) do
end
        if not inputTbl[i] then
            error(('Missing parameter %s - maybe wrong child template?'):format(v))
 
        end
function p.trim( s, charset )
        if inputTbl[i] ~= '' then  
charset = charset or '\t\r\n\f '
            result[v] = inputTbl[i]
s = s:gsub( '^[' .. charset .. ']*(.-)[' .. charset .. ']*$', '%1' )
        end
return s
    end
end
    return result
 
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


return p
return p

Navigation menu