<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mbwiki.stairwaygames.work/w/index.php?action=history&amp;feed=atom&amp;title=Module%3AIcon_list</id>
	<title>Module:Icon list - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mbwiki.stairwaygames.work/w/index.php?action=history&amp;feed=atom&amp;title=Module%3AIcon_list"/>
	<link rel="alternate" type="text/html" href="https://mbwiki.stairwaygames.work/w/index.php?title=Module:Icon_list&amp;action=history"/>
	<updated>2026-04-07T23:56:30Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://mbwiki.stairwaygames.work/w/index.php?title=Module:Icon_list&amp;diff=5386&amp;oldid=prev</id>
		<title>Admin coral island: Created page with &quot;local p = {} local lib = require(&#039;Module:Feature&#039;) local Icon = require(&#039;Module:Icon&#039;)._main  function p.main(frame) 	local args = require(&#039;Module:Arguments&#039;).getArgs(frame, { 		parentFirst = true, 		removeBlanks = false, 		wrapper = { &#039;Template:Icon list&#039; } 	}) 	return p._main(args) end  function p._main(args) 	local input = args[1] or &#039;&#039; 	local itemDelim = args.delim or &#039;;&#039; 	local items = lib.split(input, itemDelim) 	if next(items) == nil then 		return mw.html.create()...&quot;</title>
		<link rel="alternate" type="text/html" href="https://mbwiki.stairwaygames.work/w/index.php?title=Module:Icon_list&amp;diff=5386&amp;oldid=prev"/>
		<updated>2023-08-02T10:06:08Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;local p = {} local lib = require(&amp;#039;Module:Feature&amp;#039;) local Icon = require(&amp;#039;Module:Icon&amp;#039;)._main  function p.main(frame) 	local args = require(&amp;#039;Module:Arguments&amp;#039;).getArgs(frame, { 		parentFirst = true, 		removeBlanks = false, 		wrapper = { &amp;#039;Template:Icon list&amp;#039; } 	}) 	return p._main(args) end  function p._main(args) 	local input = args[1] or &amp;#039;&amp;#039; 	local itemDelim = args.delim or &amp;#039;;&amp;#039; 	local items = lib.split(input, itemDelim) 	if next(items) == nil then 		return mw.html.create()...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
local lib = require(&amp;#039;Module:Feature&amp;#039;)&lt;br /&gt;
local Icon = require(&amp;#039;Module:Icon&amp;#039;)._main&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = require(&amp;#039;Module:Arguments&amp;#039;).getArgs(frame, {&lt;br /&gt;
		parentFirst = true,&lt;br /&gt;
		removeBlanks = false,&lt;br /&gt;
		wrapper = { &amp;#039;Template:Icon list&amp;#039; }&lt;br /&gt;
	})&lt;br /&gt;
	return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	local input = args[1] or &amp;#039;&amp;#039;&lt;br /&gt;
	local itemDelim = args.delim or &amp;#039;;&amp;#039;&lt;br /&gt;
	local items = lib.split(input, itemDelim)&lt;br /&gt;
	if next(items) == nil then&lt;br /&gt;
		return mw.html.create()&lt;br /&gt;
	else&lt;br /&gt;
		return p.buildList(items, args)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.splitNote(entry, notePattern)&lt;br /&gt;
	if notePattern then&lt;br /&gt;
		item, note = entry:match(notePattern)&lt;br /&gt;
		if item == nil then -- will be nil if note is not present&lt;br /&gt;
			return entry&lt;br /&gt;
		end&lt;br /&gt;
		return item, note&lt;br /&gt;
	end&lt;br /&gt;
	return entry&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.splitParams(entry, paramDelim)&lt;br /&gt;
	if entry:find(&amp;#039;{.-}&amp;#039;) then&lt;br /&gt;
		local params = string.match(entry, &amp;#039;{(.-)}&amp;#039;)&lt;br /&gt;
		entry = entry:gsub(&amp;#039;{.-}&amp;#039;, &amp;#039;&amp;#039;)&lt;br /&gt;
		params = lib.split(params, paramDelim)&lt;br /&gt;
		local returns = {}&lt;br /&gt;
		for i, param in ipairs(params) do&lt;br /&gt;
			local name, val = string.match(param, &amp;#039;^%s*(.-)%s*=%s*(.-)%s*$&amp;#039;)&lt;br /&gt;
			if name ~= nil and name ~= &amp;#039;&amp;#039; and val ~= nil then --named params&lt;br /&gt;
				returns[name] = val&lt;br /&gt;
			elseif param ~= nil and param ~= &amp;#039;&amp;#039; then --unnamed params&lt;br /&gt;
				table.insert(returns, param)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return entry, returns&lt;br /&gt;
	end&lt;br /&gt;
	return entry, {}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.buildList(items, args)&lt;br /&gt;
	local countDelim = args.amount_delim or &amp;#039;*&amp;#039;&lt;br /&gt;
	local qualityDelim = args.quality_delim or &amp;#039;/&amp;#039;&lt;br /&gt;
	local paramDelim = args.param_delim or &amp;#039;$&amp;#039;&lt;br /&gt;
	local noteDelim = args.note_delim or &amp;#039;»&amp;#039;&lt;br /&gt;
	&lt;br /&gt;
	-- put all text after the first noteDelim into the second capture&lt;br /&gt;
	local notePattern&lt;br /&gt;
	if lib.isNotEmpty(noteDelim) then&lt;br /&gt;
		notePattern = &amp;#039;^(.-)&amp;#039; .. noteDelim .. &amp;#039;(.*)$&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- list container&lt;br /&gt;
	local container = mw.html.create():tag(&amp;#039;span&amp;#039;)&lt;br /&gt;
	if lib.isNotEmpty(args.cols) and tonumber(args.cols) ~= nil then&lt;br /&gt;
		container = mw.html.create():tag(&amp;#039;div&amp;#039;):addClass(&amp;#039;columntemplate&amp;#039;):css{ [&amp;#039;-moz-column-count&amp;#039;] = args.cols, [&amp;#039;-webkit-column-count&amp;#039;] = args.cols, [&amp;#039;column-count&amp;#039;] = args.cols }&lt;br /&gt;
	end&lt;br /&gt;
	container:addClass(&amp;#039;icon-list-container&amp;#039;)&lt;br /&gt;
	&lt;br /&gt;
	-- icon list&lt;br /&gt;
	local list = container:tag(&amp;#039;span&amp;#039;)&lt;br /&gt;
	if lib.isNotEmpty(args.bullet_list) then&lt;br /&gt;
		list = container:tag(&amp;#039;ul&amp;#039;)&lt;br /&gt;
	elseif lib.isNotEmpty(args.inline) then&lt;br /&gt;
		list:addClass(&amp;#039;icon-list-inline&amp;#039;)&lt;br /&gt;
	elseif lib.isNotEmpty(args.inline_list) then&lt;br /&gt;
		list:addClass(&amp;#039;icon-list-inline-sentence&amp;#039;)&lt;br /&gt;
	else&lt;br /&gt;
		list:addClass(&amp;#039;icon-list&amp;#039;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i, str in ipairs(items) do&lt;br /&gt;
		if not lib.isEmpty(str) then&lt;br /&gt;
			local ret = list&lt;br /&gt;
			if lib.isNotEmpty(args.bullet_list) then ret = list:tag(&amp;#039;li&amp;#039;) end&lt;br /&gt;
			for num, entry in ipairs(lib.split(str, &amp;#039;//&amp;#039;)) do&lt;br /&gt;
				local entry, iconArgs = p.splitParams(entry, paramDelim) --check for entry-specific params&lt;br /&gt;
				&lt;br /&gt;
				local pre, note = p.splitNote(entry, notePattern) --check for entry-specific note&lt;br /&gt;
				&lt;br /&gt;
				local pre_parts = lib.split(pre, qualityDelim) --check for entry-specific note&lt;br /&gt;
				local item = pre_parts[1]&lt;br /&gt;
				local quality = pre_parts[2]&lt;br /&gt;
				&lt;br /&gt;
				local item_parts = lib.split(item, countDelim) --check for entry-specific amount&lt;br /&gt;
				local name = item_parts[1]&lt;br /&gt;
				local amount = item_parts[2]&lt;br /&gt;
				&lt;br /&gt;
				--set icon arguments without replacing those set by entry-specific params&lt;br /&gt;
				iconArgs.name			= iconArgs[1]				or iconArgs.name		or name&lt;br /&gt;
				iconArgs.amount			= iconArgs.amount			or iconArgs[2]			or amount or args.amount or args[2]&lt;br /&gt;
				iconArgs.note			= iconArgs.note				or note&lt;br /&gt;
				iconArgs.q				= iconArgs.quality			or quality				or args.quality&lt;br /&gt;
				iconArgs.text			= iconArgs.text				or args.text&lt;br /&gt;
				iconArgs.size			= iconArgs.size				or args.size&lt;br /&gt;
				iconArgs.link			= iconArgs.link				or args.link&lt;br /&gt;
				iconArgs.ext			= iconArgs.ext				or args.ext&lt;br /&gt;
				iconArgs.notext			= iconArgs.notext			or args.notext&lt;br /&gt;
				iconArgs.nolink			= iconArgs.nolink			or args.nolink&lt;br /&gt;
				iconArgs.prefix			= iconArgs.prefix			or args.prefix&lt;br /&gt;
				iconArgs.suffix			= iconArgs.suffix			or args.suffix&lt;br /&gt;
				&lt;br /&gt;
				-- mw.logObject(iconArgs)&lt;br /&gt;
				if num &amp;gt; 1 then ret:tag(&amp;#039;i&amp;#039;):wikitext(&amp;#039; or &amp;#039;) end&lt;br /&gt;
				ret:node(Icon(iconArgs))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return container&lt;br /&gt;
end&lt;br /&gt;
	&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Admin coral island</name></author>
	</entry>
</feed>