Sari la conținut

Modul:StringUtils

De la Wikipedia, enciclopedia liberă
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')

function p.__isEmpty(str)
	return str == nil or (type(str) == 'string' and mw.ustring.len(str) == 0)
end
function p._isEmpty(args)
	local str = args[1]
	return p.__isEmpty(str)
end
p.isEmpty = makeInvokeFunc('_isEmpty')

function p._trim(args)
	local str = args[1]
	return mw.text.trim(str)
end
p.trim = makeInvokeFunc('_trim')
return p