Modul:StringUtils
Aspect

local p = {}
local arguments = require('Modul:Arguments')
local function makeInvokeFunc(funcName)
return function (frame)
local args = arguments.getArgs(frame, { frameOnly = true })
return p[funcName](args)
end
end
-- Adaugă la începutul unui șir un prefix, dacă nu există deja acolo el sau unul dintre cele listate în ultimul argument
function p._prependIfMissing(args)
local str = args[1]
local prefix = args[2]
local others = {}
for argK,argV in pairs(args) do
if argK > 1 then
table.insert(others, argV)
end
end
if str == nil then return nil end
if prefix == nil then return str end
for i, eachPrefix in pairs(others) do
if mw.ustring.find(str, eachPrefix) == 1 then return str end
end
return prefix .. str
end
p.prependIfMissing = makeInvokeFunc('_prependIfMissing')
-- Adaugă la sfârșitul unui șir un sufix, dacă nu există deja acolo el sau unul dintre cele listate în ultimul argument
function p._appendIfMissing(args)
local str = args[1]
local suffix = args[2]
local others = {}
for argK,argV in pairs(args) do
if argK > 1 then
table.insert(others, argV)
end
end
if str == nil then return nil end
if suffix == nil then return str end
for i, eachSuffix in pairs(others) do
local suffixStart
local suffixEnd
suffixStart, suffixEnd = mw.ustring.find(str, eachSuffix)
if suffixEnd == mw.ustring.len(str) then return str end
end
return str .. suffix
end
p.appendIfMissing = makeInvokeFunc('_appendIfMissing')
function p._emptyToNil(args)
local str = args[1]
if str == '' then return nil end
return str
end
p.emptyToNil = makeInvokeFunc('_emptyToNil')
function p._capitalize(args)
local str = args[1]
if str == nil then return nil end
return mw.ustring.upper(mw.ustring.sub(str, 1, 1)) .. mw.ustring.sub(str,2);
end
p.capitalize = makeInvokeFunc('_capitalize')
function p._removeStart(args)
local str = args[1]
if str == nil then return nil end
local prefix = args[2]
if prefix == nil then return str end
if mw.ustring.sub(str, 1, mw.ustring.len(prefix)) == prefix then return mw.ustring.sub(str, mw.ustring.len(prefix) + 1, mw.ustring.len(str)) end
return str
end
p.removeStart = makeInvokeFunc('_removeStart')
function p._removeEnd(args)
local str = args[1]
if str == nil then return nil end
local suffix = args[2]
if suffix == nil then return str end
if mw.ustring.sub(str, -mw.ustring.len(prefix)) == prefix then return mw.ustring.sub(str, 1, -mw.ustring.len(prefix) - 1) end
return str
end
p.removeEnd = makeInvokeFunc('_removeEnd')
return p