<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.geministation.com/index.php?action=history&amp;feed=atom&amp;title=Module%3AEnum</id>
	<title>Module:Enum - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.geministation.com/index.php?action=history&amp;feed=atom&amp;title=Module%3AEnum"/>
	<link rel="alternate" type="text/html" href="https://wiki.geministation.com/index.php?title=Module:Enum&amp;action=history"/>
	<updated>2026-07-20T23:38:35Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki.geministation.com/index.php?title=Module:Enum&amp;diff=8866&amp;oldid=prev</id>
		<title>Banri at 01:37, 24 March 2021</title>
		<link rel="alternate" type="text/html" href="https://wiki.geministation.com/index.php?title=Module:Enum&amp;diff=8866&amp;oldid=prev"/>
		<updated>2021-03-24T01:37:43Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://wiki.geministation.com/index.php?title=Module:Enum&amp;amp;diff=8866&amp;amp;oldid=1905&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Banri</name></author>
	</entry>
	<entry>
		<id>https://wiki.geministation.com/index.php?title=Module:Enum&amp;diff=1905&amp;oldid=prev</id>
		<title>Banri: Created page with &quot;-- &lt;nowiki&gt; awawa local libraryUtil = require(&#039;libraryUtil&#039;) local p = {}  function p.any(enum, fn, clone) 	libraryUtil.checkType(&#039;Module:Enum.any&#039;, 1, enum, &#039;table&#039;) 	library...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.geministation.com/index.php?title=Module:Enum&amp;diff=1905&amp;oldid=prev"/>
		<updated>2020-02-17T16:53:04Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;-- &amp;lt;nowiki&amp;gt; awawa local libraryUtil = require(&amp;#039;libraryUtil&amp;#039;) local p = {}  function p.any(enum, fn, clone) 	libraryUtil.checkType(&amp;#039;Module:Enum.any&amp;#039;, 1, enum, &amp;#039;table&amp;#039;) 	library...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- &amp;lt;nowiki&amp;gt; awawa&lt;br /&gt;
local libraryUtil = require(&amp;#039;libraryUtil&amp;#039;)&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.any(enum, fn, clone)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.any&amp;#039;, 1, enum, &amp;#039;table&amp;#039;)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.any&amp;#039;, 2, fn, &amp;#039;function&amp;#039;, true)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.any&amp;#039;, 3, clone, &amp;#039;boolean&amp;#039;, true)&lt;br /&gt;
	if clone then enum = mw.clone(enum) end&lt;br /&gt;
	fn = fn or function(item) return item end&lt;br /&gt;
	for _, item in ipairs(enum) do&lt;br /&gt;
		if fn(item) then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.all(enum, fn, clone)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.all&amp;#039;, 1, enum, &amp;#039;table&amp;#039;)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.all&amp;#039;, 2, fn, &amp;#039;function&amp;#039;, true)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.all&amp;#039;, 3, clone, &amp;#039;boolean&amp;#039;, true)&lt;br /&gt;
	if clone then enum = mw.clone(enum) end&lt;br /&gt;
	fn = fn or function(item) return item end&lt;br /&gt;
	for _, item in ipairs(enum) do&lt;br /&gt;
		if not fn(item) then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.each(enum, fn, clone)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.each&amp;#039;, 1, enum, &amp;#039;table&amp;#039;)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.each&amp;#039;, 2, fn, &amp;#039;function&amp;#039;)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.each&amp;#039;, 3, clone, &amp;#039;boolean&amp;#039;, true)&lt;br /&gt;
	if clone then enum = mw.clone(enum) end&lt;br /&gt;
	for _, item in ipairs(enum) do&lt;br /&gt;
		fn(item)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.filter(enum, fn, clone)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.filter&amp;#039;, 1, enum, &amp;#039;table&amp;#039;)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.filter&amp;#039;, 2, fn, &amp;#039;function&amp;#039;, true)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.filter&amp;#039;, 3, clone, &amp;#039;boolean&amp;#039;, true)&lt;br /&gt;
	if clone then enum = mw.clone(enum) end&lt;br /&gt;
	fn = fn or function(item) return item end&lt;br /&gt;
	local r = {}&lt;br /&gt;
	for _, item in ipairs(enum) do&lt;br /&gt;
		if fn(item) then&lt;br /&gt;
			table.insert(r, item)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return r&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.find(enum, fn, default, clone)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.find&amp;#039;, 1, enum, &amp;#039;table&amp;#039;)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.find&amp;#039;, 2, fn, &amp;#039;function&amp;#039;)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.find&amp;#039;, 4, clone, &amp;#039;boolean&amp;#039;, true)&lt;br /&gt;
	if clone then enum = mw.clone(enum); default = mw.clone(default) end&lt;br /&gt;
	for _, item in ipairs(enum) do&lt;br /&gt;
		if fn(item) then&lt;br /&gt;
			return item&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return default&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.find_index(enum, fn, default, clone)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.find_index&amp;#039;, 1, enum, &amp;#039;table&amp;#039;)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.find_index&amp;#039;, 2, fn, &amp;#039;function&amp;#039;)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.find_index&amp;#039;, 4, clone, &amp;#039;boolean&amp;#039;, true)&lt;br /&gt;
	if clone then enum = mw.clone(enum); default = mw.clone(default) end&lt;br /&gt;
	for index, item in ipairs(enum) do&lt;br /&gt;
		if fn(item) then&lt;br /&gt;
			return index&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return default&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.map(enum, fn, clone)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.map&amp;#039;, 1, enum, &amp;#039;table&amp;#039;)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.map&amp;#039;, 2, fn, &amp;#039;function&amp;#039;)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.map&amp;#039;, 3, clone, &amp;#039;boolean&amp;#039;, true)&lt;br /&gt;
	if clone then enum = mw.clone(enum) end&lt;br /&gt;
	local r = {}&lt;br /&gt;
	for _, item in ipairs(enum) do&lt;br /&gt;
		local temp = fn(item) -- Only use first returned item&lt;br /&gt;
		table.insert(r, temp)&lt;br /&gt;
	end&lt;br /&gt;
	return r&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.max_by(enum, fn, clone)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.max_by&amp;#039;, 1, enum, &amp;#039;table&amp;#039;)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.max_by&amp;#039;, 2, fn, &amp;#039;function&amp;#039;)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.max_by&amp;#039;, 3, clone, &amp;#039;boolean&amp;#039;, true)&lt;br /&gt;
	if clone then enum = mw.clone(enum) end&lt;br /&gt;
	return unpack(p.reduce(enum, function(new, old)&lt;br /&gt;
		local y = fn(new)&lt;br /&gt;
		return y &amp;gt; old[2] and {new, y} or old&lt;br /&gt;
	end, {0, 0}))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.reduce(enum, fn, accumulator, clone)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.reduce&amp;#039;, 1, enum, &amp;#039;table&amp;#039;)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.reduce&amp;#039;, 2, fn, &amp;#039;function&amp;#039;)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.reduce&amp;#039;, 4, clone, &amp;#039;boolean&amp;#039;, true)&lt;br /&gt;
	if clone then enum = mw.clone(enum); accumulator = mw.clone(accumulator) end&lt;br /&gt;
	local acc = accumulator&lt;br /&gt;
	for index, item in ipairs(enum) do&lt;br /&gt;
		if index == 1 and not accumulator then&lt;br /&gt;
			acc = item&lt;br /&gt;
		else&lt;br /&gt;
			acc = fn(item, acc)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return acc&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.reject(enum, fn, clone)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.reject&amp;#039;, 1, enum, &amp;#039;table&amp;#039;)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.reject&amp;#039;, 2, fn, &amp;#039;function&amp;#039;)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.reject&amp;#039;, 3, clone, &amp;#039;boolean&amp;#039;, true)&lt;br /&gt;
	if clone then enum = mw.clone(enum) end&lt;br /&gt;
	fn = fn or function(item) return item end&lt;br /&gt;
	local r = {}&lt;br /&gt;
	for _, item in ipairs(enum) do&lt;br /&gt;
		if not fn(item) then&lt;br /&gt;
			table.insert(r, item)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return r&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.scan(enum, fn, accumulator, clone)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.scan&amp;#039;, 1, enum, &amp;#039;table&amp;#039;)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.scan&amp;#039;, 2, fn, &amp;#039;function&amp;#039;)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.scan&amp;#039;, 4, clone, &amp;#039;boolean&amp;#039;, true)&lt;br /&gt;
	if clone then enum = mw.clone(enum); accumulator = mw.clone(accumulator) end&lt;br /&gt;
	local acc = accumulator&lt;br /&gt;
	local r = {}&lt;br /&gt;
	for index, item in ipairs(enum) do&lt;br /&gt;
		if index == 1 and not accumulator then&lt;br /&gt;
			acc = item&lt;br /&gt;
		else&lt;br /&gt;
			acc = fn(item, acc)&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(r, acc)&lt;br /&gt;
	end&lt;br /&gt;
	return r&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.slice(enum, start, finish, clone)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.slice&amp;#039;, 1, enum, &amp;#039;table&amp;#039;)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.slice&amp;#039;, 2, start, &amp;#039;number&amp;#039;, true)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.slice&amp;#039;, 3, finish, &amp;#039;number&amp;#039;, true)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.slice&amp;#039;, 4, clone, &amp;#039;boolean&amp;#039;, true)&lt;br /&gt;
	if clone then enum = mw.clone(enum) end&lt;br /&gt;
	start = start or 1&lt;br /&gt;
	finish = finish or #enum&lt;br /&gt;
	local r = {}&lt;br /&gt;
	for index, item in ipairs(enum) do&lt;br /&gt;
		if index &amp;gt;= start and index &amp;lt;= finish then&lt;br /&gt;
			table.insert(r, item)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return r&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.split(enum, count, clone)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.split&amp;#039;, 1, enum, &amp;#039;table&amp;#039;)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.split&amp;#039;, 2, count, &amp;#039;number&amp;#039;)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.split&amp;#039;, 3, clone, &amp;#039;boolean&amp;#039;, true)&lt;br /&gt;
	if clone then enum = mw.clone(enum) end&lt;br /&gt;
	if #enum &amp;lt; count then&lt;br /&gt;
		return enum, {}&lt;br /&gt;
	elseif count &amp;lt; 1 then&lt;br /&gt;
		return {}, enum&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local x = {}&lt;br /&gt;
	local y = {}&lt;br /&gt;
&lt;br /&gt;
	for i = 1, #enum do&lt;br /&gt;
		table.insert(&lt;br /&gt;
			i &amp;lt;= count and x or y,&lt;br /&gt;
			enum[i]&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	return x, y&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.sum(enum, clone)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.sum&amp;#039;, 1, enum, &amp;#039;table&amp;#039;)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.sum&amp;#039;, 2, clone, &amp;#039;boolean&amp;#039;, true)&lt;br /&gt;
	if clone then enum = mw.clone(enum) end&lt;br /&gt;
	return p.reduce(enum, function(x, y) return x + y end)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.take(enum, count, clone)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.take&amp;#039;, 1, enum, &amp;#039;table&amp;#039;)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.take&amp;#039;, 2, count, &amp;#039;number&amp;#039;)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.take&amp;#039;, 3, clone, &amp;#039;boolean&amp;#039;, true)&lt;br /&gt;
	if clone then enum = mw.clone(enum) end&lt;br /&gt;
	local x, _ = p.split(enum, count)&lt;br /&gt;
	return x&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.take_every(enum, n, clone)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.take_every&amp;#039;, 1, enum, &amp;#039;table&amp;#039;)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.take_every&amp;#039;, 2, n, &amp;#039;number&amp;#039;)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.take_every&amp;#039;, 3, clone, &amp;#039;boolean&amp;#039;, true)&lt;br /&gt;
	if clone then enum = mw.clone(enum) end&lt;br /&gt;
	local r = {}&lt;br /&gt;
	for index, item in ipairs(enum) do&lt;br /&gt;
		if (index - 1) % n == 0 then&lt;br /&gt;
			table.insert(r, item)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return r&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.unique(enum, fn, clone)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.unique&amp;#039;, 1, enum, &amp;#039;table&amp;#039;)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.unique&amp;#039;, 2, fn, &amp;#039;function&amp;#039;, true)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.unique&amp;#039;, 3, clone, &amp;#039;boolean&amp;#039;, true)&lt;br /&gt;
	if clone then enum = mw.clone(enum) end&lt;br /&gt;
	fn = fn or function(item) return item end&lt;br /&gt;
	local r = {}&lt;br /&gt;
	local hash = {}&lt;br /&gt;
	for _, item in ipairs(enum) do&lt;br /&gt;
		local id = fn(item)&lt;br /&gt;
		if not hash[id] then&lt;br /&gt;
			table.insert(r, item)&lt;br /&gt;
			hash[id] = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return r&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.zip(enums, clone)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.zip&amp;#039;, 1, enums, &amp;#039;table&amp;#039;)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.zip&amp;#039;, 2, clone, &amp;#039;boolean&amp;#039;, true)&lt;br /&gt;
	if clone then enums = mw.clone(enums) end&lt;br /&gt;
	local r = {}&lt;br /&gt;
	local _, longest = p.max_by(enums, function(enum) return #enum end)&lt;br /&gt;
	for i = 1, longest do&lt;br /&gt;
		local q = {}&lt;br /&gt;
		for j = 1, #enums do&lt;br /&gt;
			table.insert(q, enums[j][i])&lt;br /&gt;
		end&lt;br /&gt;
		table.insert(r, q)&lt;br /&gt;
	end&lt;br /&gt;
	return r&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.intersect(enum1, enum2, clone)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.intersect&amp;#039;, 1, enum1, &amp;#039;table&amp;#039;)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.intersect&amp;#039;, 2, enum2, &amp;#039;table&amp;#039;)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.intersect&amp;#039;, 3, clone, &amp;#039;boolean&amp;#039;, true)&lt;br /&gt;
	if clone then enum1 = mw.clone(enum1); enum2 = mw.clone(enum2) end&lt;br /&gt;
	return p.any(enum1, function(item1) return p.any(enum2, function(item2) return item1==item2 end) end)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.contains(enum, elem, clone)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.contains&amp;#039;, 1, enum, &amp;#039;table&amp;#039;)&lt;br /&gt;
	libraryUtil.checkType(&amp;#039;Module:Enum.contains&amp;#039;, 3, clone, &amp;#039;boolean&amp;#039;, true)&lt;br /&gt;
	if clone then enum = mw.clone(enum); elem = mw.clone(elem) end&lt;br /&gt;
	return p.any(enum, function(item) return item == elem end)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;br /&gt;
-- &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Banri</name></author>
	</entry>
</feed>