<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ro">
	<id>https://enciclopedia.md/index.php?action=history&amp;feed=atom&amp;title=Modul%3AStringUtils</id>
	<title>Modul:StringUtils - Revizia istoricului</title>
	<link rel="self" type="application/atom+xml" href="https://enciclopedia.md/index.php?action=history&amp;feed=atom&amp;title=Modul%3AStringUtils"/>
	<link rel="alternate" type="text/html" href="https://enciclopedia.md/index.php?title=Modul:StringUtils&amp;action=history"/>
	<updated>2026-04-23T15:08:11Z</updated>
	<subtitle>Istoricul versiunilor pentru această pagină din wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://enciclopedia.md/index.php?title=Modul:StringUtils&amp;diff=336&amp;oldid=prev</id>
		<title>Sergiu: Pagină nouă: local p = {} local arguments = require(&#039;Modul:Arguments&#039;) local TableTools = require(&#039;Modul:TableTools&#039;)  local function makeInvokeFunc(funcName) 	return function (frame) 		local args = arguments.getArgs(frame, { wrappers = &#039;Format:Ifempty&#039; }) 		local firstRet,secondRet = p[funcName](args) 		return firstRet 	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(...)...</title>
		<link rel="alternate" type="text/html" href="https://enciclopedia.md/index.php?title=Modul:StringUtils&amp;diff=336&amp;oldid=prev"/>
		<updated>2024-07-14T19:55:51Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: local p = {} local arguments = require(&amp;#039;Modul:Arguments&amp;#039;) local TableTools = require(&amp;#039;Modul:TableTools&amp;#039;)  local function makeInvokeFunc(funcName) 	return function (frame) 		local args = arguments.getArgs(frame, { wrappers = &amp;#039;Format:Ifempty&amp;#039; }) 		local firstRet,secondRet = p[funcName](args) 		return firstRet 	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(...)...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Pagină nouă&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
local arguments = require(&amp;#039;Modul:Arguments&amp;#039;)&lt;br /&gt;
local TableTools = require(&amp;#039;Modul:TableTools&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local function makeInvokeFunc(funcName)&lt;br /&gt;
	return function (frame)&lt;br /&gt;
		local args = arguments.getArgs(frame, { wrappers = &amp;#039;Format:Ifempty&amp;#039; })&lt;br /&gt;
		local firstRet,secondRet = p[funcName](args)&lt;br /&gt;
		return firstRet&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Adaugă la începutul unui șir un prefix, dacă nu există deja acolo el sau unul dintre cele listate în ultimul argument&lt;br /&gt;
function p._prependIfMissing(...)&lt;br /&gt;
	local args = arg.n == 0 and {} or type(arg[1]) == &amp;#039;table&amp;#039; and arg[1] or arg&lt;br /&gt;
	local str = args[1] and tostring(args[1]) or nil&lt;br /&gt;
	local prefix = args[2]&lt;br /&gt;
	local others = {}&lt;br /&gt;
	for argIdx = 2, TableTools.size(args) do&lt;br /&gt;
		table.insert(others, args[argIdx])&lt;br /&gt;
	end&lt;br /&gt;
	if str == nil then return nil end&lt;br /&gt;
	if prefix == nil then return str end&lt;br /&gt;
	&lt;br /&gt;
	for i, eachPrefix in pairs(others) do	&lt;br /&gt;
		if mw.ustring.find(str, eachPrefix, 1, true) == 1 then return str end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return prefix .. str&lt;br /&gt;
end&lt;br /&gt;
p.prependIfMissing = makeInvokeFunc(&amp;#039;_prependIfMissing&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
-- Adaugă la sfârșitul unui șir un sufix, dacă nu există deja acolo el sau unul dintre cele listate în ultimul argument&lt;br /&gt;
function p._appendIfMissing(...)&lt;br /&gt;
	local args = arg.n == 0 and {} or type(arg[1]) == &amp;#039;table&amp;#039; and arg[1] or arg&lt;br /&gt;
	local str = tostring(args[1])&lt;br /&gt;
	local suffix = args[2]&lt;br /&gt;
	local others = {}&lt;br /&gt;
	for argK,argV in pairs(args) do&lt;br /&gt;
		if argK &amp;gt; 1 then&lt;br /&gt;
			table.insert(others, argV)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if str == nil then return nil end&lt;br /&gt;
	if suffix == nil then return str end&lt;br /&gt;
&lt;br /&gt;
	for i, eachSuffix in pairs(others) do&lt;br /&gt;
		local suffixStart&lt;br /&gt;
		local suffixEnd&lt;br /&gt;
		suffixStart, suffixEnd = mw.ustring.find(str, eachSuffix, 1, true) &lt;br /&gt;
		if suffixEnd == mw.ustring.len(str) then return str end&lt;br /&gt;
	end&lt;br /&gt;
	return str .. suffix&lt;br /&gt;
end&lt;br /&gt;
p.appendIfMissing = makeInvokeFunc(&amp;#039;_appendIfMissing&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
function p._emptyToNil(...)&lt;br /&gt;
	local args = arg.n == 0 and {} or type(arg[1]) == &amp;#039;table&amp;#039; and arg[1] or arg&lt;br /&gt;
	local str = args[1]&lt;br /&gt;
	if str == &amp;#039;&amp;#039; then return nil end&lt;br /&gt;
	return str&lt;br /&gt;
end&lt;br /&gt;
p.emptyToNil = makeInvokeFunc(&amp;#039;_emptyToNil&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
function p._capitalize(...)&lt;br /&gt;
	local args = arg.n == 0 and {} or type(arg[1]) == &amp;#039;table&amp;#039; and arg[1] or arg&lt;br /&gt;
	local str = args[1]&lt;br /&gt;
	if str == nil then return nil end&lt;br /&gt;
	return mw.ustring.upper(mw.ustring.sub(str, 1, 1)) .. mw.ustring.sub(str,2);&lt;br /&gt;
end&lt;br /&gt;
p.capitalize = makeInvokeFunc(&amp;#039;_capitalize&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
function p._removeStart(...)&lt;br /&gt;
	local args = arg.n == 0 and {} or type(arg[1]) == &amp;#039;table&amp;#039; and arg[1] or arg&lt;br /&gt;
	local str = args[1]&lt;br /&gt;
	if str == nil then return nil end&lt;br /&gt;
	for pfIdx = 2,TableTools.size(args) do&lt;br /&gt;
		local prefix = args[pfIdx]&lt;br /&gt;
		if prefix == nil then return str end&lt;br /&gt;
		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&lt;br /&gt;
	end&lt;br /&gt;
	return str&lt;br /&gt;
end&lt;br /&gt;
p.removeStart = makeInvokeFunc(&amp;#039;_removeStart&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
function p._removeEnd(...)&lt;br /&gt;
	local args = arg.n == 0 and {} or type(arg[1]) == &amp;#039;table&amp;#039; and arg[1] or arg&lt;br /&gt;
	local str = args[1]&lt;br /&gt;
	if str == nil then return nil end&lt;br /&gt;
	for sfIdx = 2,TableTools.size(args) do&lt;br /&gt;
		local suffix = args[sfIdx]&lt;br /&gt;
		if suffix == nil then return str end&lt;br /&gt;
		if mw.ustring.sub(str, -mw.ustring.len(suffix)) == suffix then return mw.ustring.sub(str, 1, -mw.ustring.len(suffix) - 1) end&lt;br /&gt;
	end&lt;br /&gt;
	return str&lt;br /&gt;
end&lt;br /&gt;
p.removeEnd = makeInvokeFunc(&amp;#039;_removeEnd&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
function p.__isEmpty(str)&lt;br /&gt;
	return str == nil or (type(str) == &amp;#039;string&amp;#039; and mw.ustring.len(str) == 0)&lt;br /&gt;
end&lt;br /&gt;
function p._isEmpty(...)&lt;br /&gt;
	local args = arg.n == 0 and {} or type(arg[1]) == &amp;#039;table&amp;#039; and arg[1] or arg&lt;br /&gt;
	local str = args[1]&lt;br /&gt;
	return p.__isEmpty(str)&lt;br /&gt;
end&lt;br /&gt;
p.isEmpty = makeInvokeFunc(&amp;#039;_isEmpty&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
function p._trim(...)&lt;br /&gt;
	local args = arg.n == 0 and {} or type(arg[1]) == &amp;#039;table&amp;#039; and arg[1] or arg&lt;br /&gt;
	local str = args[1]&lt;br /&gt;
	if not str then return nil end&lt;br /&gt;
	return mw.text.trim(str)&lt;br /&gt;
end&lt;br /&gt;
p.trim = makeInvokeFunc(&amp;#039;_trim&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
function p._startsWithAny(...)&lt;br /&gt;
	local args = arg.n == 0 and {} or type(arg[1]) == &amp;#039;table&amp;#039; and arg[1] or arg&lt;br /&gt;
	local str = args[1]&lt;br /&gt;
	if not str then return false end&lt;br /&gt;
	local idx = 2&lt;br /&gt;
	while idx &amp;lt;= TableTools.size(args) do&lt;br /&gt;
		if args[idx] and mw.ustring.sub(str, 1, mw.ustring.len(args[idx])) == args[idx] then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
		idx = idx + 1&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
p.startsWithAny = makeInvokeFunc(&amp;#039;_startsWithAny&amp;#039;)&lt;br /&gt;
p._startsWith = p._startsWithAny&lt;br /&gt;
p.startsWith = makeInvokeFunc(&amp;#039;_startsWith&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
function p._endsWithAny(...)&lt;br /&gt;
	local args = arg.n == 0 and {} or type(arg[1]) == &amp;#039;table&amp;#039; and arg[1] or arg&lt;br /&gt;
	local str = args[1]&lt;br /&gt;
	if not str then return false end&lt;br /&gt;
	local idx = 2&lt;br /&gt;
	while idx &amp;lt;= TableTools.size(args) do&lt;br /&gt;
		if args[idx] and mw.ustring.sub(str, mw.ustring.len(str) - mw.ustring.len(args[idx]) + 1, mw.ustring.len(str)) == args[idx] then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
		idx = idx + 1&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
p.endsWithAny = makeInvokeFunc(&amp;#039;_endsWith&amp;#039;)&lt;br /&gt;
p._endsWith = p._endsWithAny&lt;br /&gt;
p.endsWith = makeInvokeFunc(&amp;#039;_endsWith&amp;#039;)&lt;br /&gt;
	&lt;br /&gt;
function p._substringBefore(...)&lt;br /&gt;
	local args = arg.n == 0 and {} or type(arg[1]) == &amp;#039;table&amp;#039; and arg[1] or arg&lt;br /&gt;
	local str = args[1]&lt;br /&gt;
	if not str then return nil end&lt;br /&gt;
	local idx = 2&lt;br /&gt;
	local substringEndPos = 1 + mw.ustring.len(str)&lt;br /&gt;
	local firstSep = &amp;#039;&amp;#039;&lt;br /&gt;
	while idx &amp;lt;= TableTools.size(args) do&lt;br /&gt;
		if args[idx] then&lt;br /&gt;
			local substringStart = mw.ustring.find(str, args[idx], 1, true)&lt;br /&gt;
			if substringStart and substringStart &amp;lt; substringEndPos then&lt;br /&gt;
				substringEndPos = substringStart&lt;br /&gt;
				firstSep = args[idx]&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		idx = idx + 1&lt;br /&gt;
	end&lt;br /&gt;
	return mw.ustring.sub(str, 1, substringEndPos-1), firstSep&lt;br /&gt;
end&lt;br /&gt;
p.substringBefore = makeInvokeFunc(&amp;#039;_substringBefore&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function p._substringAfter(...)&lt;br /&gt;
	local args = arg.n == 0 and {} or type(arg[1]) == &amp;#039;table&amp;#039; and arg[1] or arg&lt;br /&gt;
	local str = args[1]&lt;br /&gt;
	if not str then return nil end&lt;br /&gt;
	local idx = 2&lt;br /&gt;
	local substringStartPos = 1 + mw.ustring.len(str)&lt;br /&gt;
	local firstSep = &amp;#039;&amp;#039;&lt;br /&gt;
	while args[idx] ~= nil do&lt;br /&gt;
		local substringStart = mw.ustring.find(str, args[idx], 1, true)&lt;br /&gt;
		if substringStart and substringStart &amp;lt; substringStartPos then&lt;br /&gt;
			substringStartPos = substringStart + mw.ustring.len(args[idx])&lt;br /&gt;
			firstSep = args[idx]&lt;br /&gt;
		end&lt;br /&gt;
		idx = idx + 1&lt;br /&gt;
	end&lt;br /&gt;
	if substringStartPos &amp;gt; mw.ustring.len(str) then return str end&lt;br /&gt;
	return mw.ustring.sub(str, substringStartPos), firstSep&lt;br /&gt;
end&lt;br /&gt;
p.substringAfter = makeInvokeFunc(&amp;#039;_substringAfter&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
function p._defaultString(...)&lt;br /&gt;
	local args = arg.n == 0 and {} or type(arg[1]) == &amp;#039;table&amp;#039; and arg[1] or arg&lt;br /&gt;
	local compressedArgs = TableTools.compressSparseArray(args)&lt;br /&gt;
&lt;br /&gt;
	if #compressedArgs == 0 then return &amp;#039;&amp;#039; end&lt;br /&gt;
	return compressedArgs[1]&lt;br /&gt;
end&lt;br /&gt;
p.defaultString = makeInvokeFunc(&amp;#039;_defaultString&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
function p._appendToString(...)&lt;br /&gt;
	local args = arg.n == 0 and {} or type(arg[1]) == &amp;#039;table&amp;#039; and arg[1] or arg&lt;br /&gt;
	local str = args[1]&lt;br /&gt;
	local suffix = args[2]&lt;br /&gt;
	if str then&lt;br /&gt;
		return tostring(str) .. tostring(suffix or &amp;#039;&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;#039;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
p.appendToString = makeInvokeFunc(&amp;#039;_appendToString&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
function p._prependToString(...)&lt;br /&gt;
	local args = arg.n == 0 and {} or type(arg[1]) == &amp;#039;table&amp;#039; and arg[1] or arg&lt;br /&gt;
	local str = args[1]&lt;br /&gt;
	local prefix = args[2]&lt;br /&gt;
	if str then&lt;br /&gt;
		return tostring(prefix or &amp;#039;&amp;#039;) .. tostring(str)&lt;br /&gt;
	end&lt;br /&gt;
	return &amp;#039;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
p.prependToString = makeInvokeFunc(&amp;#039;_prependToString&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
function p._encloseString(...)&lt;br /&gt;
	local args = arg.n == 0 and {} or type(arg[1]) == &amp;#039;table&amp;#039; and arg[1] or arg&lt;br /&gt;
	return p._prependToString({p._emptyToNil({p._appendToString({args[1], args[3]})}), args[2]})&lt;br /&gt;
end&lt;br /&gt;
p.encloseString = makeInvokeFunc(&amp;#039;_encloseString&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
function p._stripNamespace(...)&lt;br /&gt;
	local args = arg.n == 0 and {} or type(arg[1]) == &amp;#039;table&amp;#039; and arg[1] or arg&lt;br /&gt;
	s,_ = p._substringAfter({args[1],&amp;#039;:&amp;#039;})&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
p.stripNamespace = makeInvokeFunc(&amp;#039;_stripNamespace&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
-- Determină dacă o secvență de text conține o legătură spre un articol anume.&lt;br /&gt;
function p._findLinkByTitle(...)&lt;br /&gt;
	local args = arg.n == 0 and {} or type(arg[1]) == &amp;#039;table&amp;#039; and arg[1] or arg&lt;br /&gt;
	local str = args[1]:gsub(&amp;#039;_&amp;#039;, &amp;#039; &amp;#039;)&lt;br /&gt;
	local pattern = &amp;#039;%[%[%s*&amp;#039; .. p._trim({(args[2] or &amp;#039;&amp;#039;):gsub(&amp;#039;_&amp;#039;, &amp;#039; &amp;#039;)}):gsub(&amp;#039;([+*?%-%(%)%%%.])&amp;#039;, &amp;#039;%%%1&amp;#039;) .. &amp;#039;%s*[%]|]&amp;#039;&lt;br /&gt;
	if str then&lt;br /&gt;
		return str:find(pattern, 1, false) or 0&lt;br /&gt;
	end&lt;br /&gt;
	return 0&lt;br /&gt;
end&lt;br /&gt;
p.findLinkByTitle = makeInvokeFunc(&amp;#039;_findLinkByTitle&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
function p._firstValue(...)&lt;br /&gt;
	local args = arg.n == 0 and {} or type(arg[1]) == &amp;#039;table&amp;#039; and arg[1] or arg&lt;br /&gt;
	local compactedArgs = TableTools.compressSparseArray(args)&lt;br /&gt;
	return #compactedArgs &amp;gt; 0 and compactedArgs[1] or &amp;#039;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
p.firstValue = makeInvokeFunc(&amp;#039;_firstValue&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
function p.isNilOrEmpty(argument)&lt;br /&gt;
	return argument == nil or argument == {} or mw.text.trim(argument) == &amp;#039;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Sergiu</name></author>
	</entry>
</feed>