<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://classic.pgnrp.com/index.php?action=history&amp;feed=atom&amp;title=Module%3ACommon</id>
	<title>Module:Common - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://classic.pgnrp.com/index.php?action=history&amp;feed=atom&amp;title=Module%3ACommon"/>
	<link rel="alternate" type="text/html" href="https://classic.pgnrp.com/index.php?title=Module:Common&amp;action=history"/>
	<updated>2026-04-08T19:20:08Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://classic.pgnrp.com/index.php?title=Module:Common&amp;diff=69&amp;oldid=prev</id>
		<title>Maegnus: Created page with &quot;local libraryUtil = require(&#039;libraryUtil&#039;) local checkType = libraryUtil.checkType local checkTypeMulti = libraryUtil.checkTypeMulti  local p = {}   --- Escape pattern for regex  --- @param s string string to escape --- @return string local function escapePattern(s) 	return s:gsub(&quot;%W&quot;, &quot;%%%1&quot;) end   --- Check if table contains value, return key if match --- --- @param t table - Table to search --- @param val any - Value to match --- @return number|nil function p.tableCo...&quot;</title>
		<link rel="alternate" type="text/html" href="https://classic.pgnrp.com/index.php?title=Module:Common&amp;diff=69&amp;oldid=prev"/>
		<updated>2025-05-21T04:41:15Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;local libraryUtil = require(&amp;#039;libraryUtil&amp;#039;) local checkType = libraryUtil.checkType local checkTypeMulti = libraryUtil.checkTypeMulti  local p = {}   --- Escape pattern for regex  --- @param s string string to escape --- @return string local function escapePattern(s) 	return s:gsub(&amp;quot;%W&amp;quot;, &amp;quot;%%%1&amp;quot;) end   --- Check if table contains value, return key if match --- --- @param t table - Table to search --- @param val any - Value to match --- @return number|nil function p.tableCo...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local libraryUtil = require(&amp;#039;libraryUtil&amp;#039;)&lt;br /&gt;
local checkType = libraryUtil.checkType&lt;br /&gt;
local checkTypeMulti = libraryUtil.checkTypeMulti&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--- Escape pattern for regex&lt;br /&gt;
&lt;br /&gt;
--- @param s string string to escape&lt;br /&gt;
--- @return string&lt;br /&gt;
local function escapePattern(s)&lt;br /&gt;
	return s:gsub(&amp;quot;%W&amp;quot;, &amp;quot;%%%1&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--- Check if table contains value, return key if match&lt;br /&gt;
---&lt;br /&gt;
--- @param t table - Table to search&lt;br /&gt;
--- @param val any - Value to match&lt;br /&gt;
--- @return number|nil&lt;br /&gt;
function p.tableContains(t, val)&lt;br /&gt;
	checkType(&amp;#039;Module:Common.tableContains&amp;#039;, 1, t, &amp;#039;table&amp;#039;)&lt;br /&gt;
	for k, v in pairs(t) do&lt;br /&gt;
		if v == val then&lt;br /&gt;
			return k&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--- Check if table contains key, return value if match&lt;br /&gt;
---&lt;br /&gt;
--- @param t table - Table to search&lt;br /&gt;
--- @param key string|number - Key to match&lt;br /&gt;
--- @return number|nil&lt;br /&gt;
function p.tableContainsKey(t, key)&lt;br /&gt;
	checkType(&amp;#039;Module:Common.tableContainsKey&amp;#039;, 1, t, &amp;#039;table&amp;#039;)&lt;br /&gt;
	checkTypeMulti(&amp;#039;Module:Common.tableContainsKey&amp;#039;, 2, key, {&amp;#039;string&amp;#039;, &amp;#039;number&amp;#039;})&lt;br /&gt;
	for k, v in pairs(t) do&lt;br /&gt;
		if k == key then&lt;br /&gt;
			return v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--- Split string by delimiter and return the table of string parts&lt;br /&gt;
---&lt;br /&gt;
--- @param str string String to split&lt;br /&gt;
--- @param delimiter string Delimiter used to split the string, default to %s&lt;br /&gt;
--- @return table&lt;br /&gt;
function p.splitStringIntoTable( str, delimiter )&lt;br /&gt;
        if delimiter == nil then&lt;br /&gt;
                delimiter = &amp;quot;%s&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
        local t = {}&lt;br /&gt;
        local pattern = &amp;#039;[^&amp;#039; .. escapePattern( delimiter ) .. &amp;#039;]+&amp;#039;&lt;br /&gt;
        for s in string.gmatch( str, pattern ) do&lt;br /&gt;
                table.insert( t, s )&lt;br /&gt;
        end&lt;br /&gt;
        return t&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--- Returns a table containing the numbers of the arguments that exist&lt;br /&gt;
--- for the specified prefix. For example, if the prefix was &amp;#039;data&amp;#039;, and&lt;br /&gt;
--- &amp;#039;data1&amp;#039;, &amp;#039;data2&amp;#039;, and &amp;#039;data5&amp;#039; exist, it would return {1, 2, 5}.&lt;br /&gt;
---&lt;br /&gt;
--- @param prefix string Prefix of the argument name&lt;br /&gt;
--- @param args table Table of arguments&lt;br /&gt;
--- @return table Table of argument numbers&lt;br /&gt;
function p.getArgNums(prefix, args)&lt;br /&gt;
	local nums = {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		local num = tostring(k):match(&amp;#039;^&amp;#039; .. prefix .. &amp;#039;([1-9]%d*)$&amp;#039;)&lt;br /&gt;
		if num then table.insert(nums, tonumber(num)) end&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(nums)&lt;br /&gt;
	return nums&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Maegnus</name></author>
	</entry>
</feed>