<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.iccup.org/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3AStringUtils</id>
	<title>Модуль:StringUtils - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.iccup.org/index.php?action=history&amp;feed=atom&amp;title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%3AStringUtils"/>
	<link rel="alternate" type="text/html" href="https://wiki.iccup.org/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:StringUtils&amp;action=history"/>
	<updated>2026-05-31T02:15:59Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://wiki.iccup.org/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:StringUtils&amp;diff=247&amp;oldid=prev</id>
		<title>DarkMuse: Новая страница: «--- -- @iCCup -- wiki=commons -- page=Module:StringUtils -- -- Please see https://github.com/iCCup/Lua-Modules to contribute --  local String = {}  ---@param str string ---@param start string ---@return boolean function String.startsWith(str, start) 	return str:sub(1, #start) == start --str:find(&#039;^&#039; .. start) ~= nil end  ---@param str string ---@param ending string ---@return boolean function String.endsWith(str, ending) 	return ending == &#039;&#039; or str:sub(-#end...»</title>
		<link rel="alternate" type="text/html" href="https://wiki.iccup.org/index.php?title=%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C:StringUtils&amp;diff=247&amp;oldid=prev"/>
		<updated>2024-09-03T20:00:39Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «--- -- @iCCup -- wiki=commons -- page=Module:StringUtils -- -- Please see https://github.com/iCCup/Lua-Modules to contribute --  local String = {}  ---@param str string ---@param start string ---@return boolean function String.startsWith(str, start) 	return str:sub(1, #start) == start --str:find(&amp;#039;^&amp;#039; .. start) ~= nil end  ---@param str string ---@param ending string ---@return boolean function String.endsWith(str, ending) 	return ending == &amp;#039;&amp;#039; or str:sub(-#end...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;---&lt;br /&gt;
-- @iCCup&lt;br /&gt;
-- wiki=commons&lt;br /&gt;
-- page=Module:StringUtils&lt;br /&gt;
--&lt;br /&gt;
-- Please see https://github.com/iCCup/Lua-Modules to contribute&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
local String = {}&lt;br /&gt;
&lt;br /&gt;
---@param str string&lt;br /&gt;
---@param start string&lt;br /&gt;
---@return boolean&lt;br /&gt;
function String.startsWith(str, start)&lt;br /&gt;
	return str:sub(1, #start) == start --str:find(&amp;#039;^&amp;#039; .. start) ~= nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---@param str string&lt;br /&gt;
---@param ending string&lt;br /&gt;
---@return boolean&lt;br /&gt;
function String.endsWith(str, ending)&lt;br /&gt;
	return ending == &amp;#039;&amp;#039; or str:sub(-#ending) == ending&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---@param inputstr string?&lt;br /&gt;
---@param sep string?&lt;br /&gt;
---@return table&lt;br /&gt;
function String.split(inputstr, sep)&lt;br /&gt;
	if inputstr ~= nil then&lt;br /&gt;
		if sep == nil then&lt;br /&gt;
			sep = &amp;#039;%s&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
		inputstr = inputstr:gsub(sep, &amp;#039;&amp;amp;&amp;#039;)&lt;br /&gt;
		local t = {}&lt;br /&gt;
		local i = 1&lt;br /&gt;
		for str in string.gmatch(inputstr, &amp;#039;([^&amp;amp;]+)&amp;#039;) do&lt;br /&gt;
			t[i] = str&lt;br /&gt;
			i = i + 1&lt;br /&gt;
		end&lt;br /&gt;
		return t&lt;br /&gt;
	else&lt;br /&gt;
		return {&amp;#039;&amp;#039;}&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- need to escape `.()[]+-%` with % for &amp;#039;match&amp;#039;&lt;br /&gt;
---@param str string&lt;br /&gt;
---@param match string&lt;br /&gt;
---@return boolean&lt;br /&gt;
function String.contains(str, match)&lt;br /&gt;
	return string.find(str, match) ~= nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Trims a string from tabs (`\t`), new lines (`\n`), carriage returns (`\r`),&lt;br /&gt;
--- form feeds (`\f`), whitespaces (` `) and non-breaking spaces (`&amp;amp;nbsp;`)&lt;br /&gt;
---@param str string&lt;br /&gt;
---@return string&lt;br /&gt;
function String.trim(str)&lt;br /&gt;
	-- `\t\r\n\f ` is the default charset&lt;br /&gt;
	-- `\194\160` is the non-breaking space (&amp;amp;nsbp;)&lt;br /&gt;
	return mw.text.trim(str, &amp;quot;\t\r\n\f \194\160&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---@param str string?&lt;br /&gt;
---@return string?&lt;br /&gt;
function String.nilIfEmpty(str)&lt;br /&gt;
	return str ~= &amp;#039;&amp;#039; and str or nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---@param str string?&lt;br /&gt;
---@return boolean&lt;br /&gt;
function String.isEmpty(str)&lt;br /&gt;
	return str == nil or str == &amp;#039;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---@param str string?&lt;br /&gt;
---@return boolean&lt;br /&gt;
function String.isNotEmpty(str)&lt;br /&gt;
	return str ~= nil and str ~= &amp;#039;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---transforms a wiki code list:&lt;br /&gt;
---&lt;br /&gt;
--- * text&lt;br /&gt;
--- * text&lt;br /&gt;
---&lt;br /&gt;
---into a html list (with ul/li tags)&lt;br /&gt;
---@param str string?&lt;br /&gt;
---@param delimiter string?&lt;br /&gt;
---@return string&lt;br /&gt;
function String.convertWikiListToHtmlList(str, delimiter)&lt;br /&gt;
	if String.isEmpty(str) then&lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	---@cast str -nil&lt;br /&gt;
	if String.isEmpty(delimiter) then&lt;br /&gt;
		delimiter = &amp;#039;*&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	local strArray = mw.text.split(str, delimiter)&lt;br /&gt;
	local list = mw.html.create(&amp;#039;ul&amp;#039;)&lt;br /&gt;
	for _, item in ipairs(strArray) do&lt;br /&gt;
		if not String.isEmpty(item) then&lt;br /&gt;
			list:tag(&amp;#039;li&amp;#039;):wikitext(item)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return tostring(list)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Create a string with string interpolation&lt;br /&gt;
---&lt;br /&gt;
--- String.interpolation(&amp;#039;I\&amp;#039;m ${age} years old&amp;#039;, {age = 40})&lt;br /&gt;
--- Returns `I&amp;#039;m 40 years old`&lt;br /&gt;
---&lt;br /&gt;
--- Inspiration: http://lua-users.org/wiki/StringInterpolation&lt;br /&gt;
---@param s string&lt;br /&gt;
---@param tbl table&lt;br /&gt;
---@return string&lt;br /&gt;
function String.interpolate(s, tbl)&lt;br /&gt;
	return (&lt;br /&gt;
		s:gsub(&amp;#039;($%b{})&amp;#039;,&lt;br /&gt;
			function(w)&lt;br /&gt;
				return tbl[w:sub(3, -2)] or w&lt;br /&gt;
			end&lt;br /&gt;
		)&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
---Uppercase the first letter of a string&lt;br /&gt;
---@param str string&lt;br /&gt;
---@return string&lt;br /&gt;
function String.upperCaseFirst(str)&lt;br /&gt;
	return mw.getContentLanguage():ucfirst(str)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return String&lt;/div&gt;</summary>
		<author><name>DarkMuse</name></author>
	</entry>
</feed>