<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://petitplanet.wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3AItem_List</id>
	<title>Module:Item List - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://petitplanet.wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3AItem_List"/>
	<link rel="alternate" type="text/html" href="https://petitplanet.wiki/index.php?title=Module:Item_List&amp;action=history"/>
	<updated>2026-04-12T22:09:05Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://petitplanet.wiki/index.php?title=Module:Item_List&amp;diff=452&amp;oldid=prev</id>
		<title>ReisuDesign: Created page with &quot;local p = {} local lib = require(&#039;Module:Feature&#039;) local Item = require(&#039;Module:Item&#039;)._main  function p.main(frame) 	local args = require(&#039;Module:Arguments&#039;).getArgs(frame, { 		parentFirst = true, 		removeBlanks = false, 		wrapper = { &#039;Template:Item List&#039; } 	}) 	return p._main(args) end  function p.splitNote(entry, notePattern) 	if notePattern then 		item, note = entry:match(notePattern) 		if item == nil then -- will be nil if note is not present 			return entry 		end...&quot;</title>
		<link rel="alternate" type="text/html" href="https://petitplanet.wiki/index.php?title=Module:Item_List&amp;diff=452&amp;oldid=prev"/>
		<updated>2025-11-10T19:02:31Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;local p = {} local lib = require(&amp;#039;Module:Feature&amp;#039;) local Item = require(&amp;#039;Module:Item&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:Item List&amp;#039; } 	}) 	return p._main(args) end  function p.splitNote(entry, notePattern) 	if notePattern then 		item, note = entry:match(notePattern) 		if item == nil then -- will be nil if note is not present 			return entry 		end...&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 Item = require(&amp;#039;Module:Item&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:Item 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.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;
-- all the non-boolean params except note_delim&lt;br /&gt;
local PARAMS_NOT_SUPPORTING_BLANKS = {&amp;quot;caption&amp;quot;, &amp;quot;text&amp;quot;, &amp;quot;amount&amp;quot;, &amp;quot;delim&amp;quot;, &amp;quot;amount_delim&amp;quot;, &amp;quot;type&amp;quot;, &amp;quot;size&amp;quot;}&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 mode = args.mode or &amp;#039;bullet&amp;#039;&lt;br /&gt;
	local itemDelim = args.delim or &amp;#039;;&amp;#039;&lt;br /&gt;
	local countDelim = args.amount_delim or &amp;#039;*&amp;#039;&lt;br /&gt;
	local noteDelim = args.note_delim or &amp;#039;/&amp;#039;&lt;br /&gt;
	local paramDelim = args.param_delim or &amp;#039;$&amp;#039;&lt;br /&gt;
	&lt;br /&gt;
	--= handle blanks for non-boolean params&lt;br /&gt;
	for _, paramName in ipairs(PARAMS_NOT_SUPPORTING_BLANKS) do&lt;br /&gt;
		local value = args[paramName]&lt;br /&gt;
		if value == &amp;quot;&amp;quot; then&lt;br /&gt;
			args[paramName] = nil&lt;br /&gt;
		end&lt;br /&gt;
	end&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;quot;^(.-)&amp;quot; .. noteDelim .. &amp;quot;(.*)$&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = mw.html.create()&lt;br /&gt;
	local categories = mw.html.create()&lt;br /&gt;
	local items = {}&lt;br /&gt;
	&lt;br /&gt;
	for i, entry in ipairs(lib.split(input, itemDelim, {noTrim=true})) do&lt;br /&gt;
		if lib.isNotEmpty(entry) then&lt;br /&gt;
			local entry, itemArgs = p.splitParams(entry, paramDelim) -- check for entry-specific params&lt;br /&gt;
			&lt;br /&gt;
			local item, note = p.splitNote(entry, notePattern) -- check for entry-specific note&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;
			itemArgs.name		= itemArgs[1]			or itemArgs.name	or name&lt;br /&gt;
			itemArgs.size		= itemArgs[2]			or itemArgs.size	or args[2]			or args.size or &amp;#039;20&amp;#039;&lt;br /&gt;
			itemArgs.count		= amount				or itemArgs.x		or itemArgs.amount	or args.x	or args.amount&lt;br /&gt;
			itemArgs.type		= itemArgs.type			or args.type&lt;br /&gt;
			itemArgs.text		= itemArgs.text			or args.text&lt;br /&gt;
			itemArgs.link		= itemArgs.link			or args.link&lt;br /&gt;
			itemArgs.note		= itemArgs.note			or args.note&lt;br /&gt;
			itemArgs.ref		= itemArgs.ref			or args.ref&lt;br /&gt;
			itemArgs.blueprint	= itemArgs.blueprint	or args.blueprint&lt;br /&gt;
			itemArgs.newline	= itemArgs.newline		or args.newline&lt;br /&gt;
			itemArgs.notext		= itemArgs.notext		or args.notext&lt;br /&gt;
			itemArgs.white		= itemArgs.white		or args.white&lt;br /&gt;
			-- mw.logObject(itemArgs)&lt;br /&gt;
			&lt;br /&gt;
			table.insert(items, Item(itemArgs))&lt;br /&gt;
	&lt;br /&gt;
			if (args.category ~= nil) then&lt;br /&gt;
				categories:wikitext(&amp;#039;[[Category:&amp;#039;, args.category:gsub(&amp;#039;{item}&amp;#039;, name), &amp;#039;]]&amp;#039;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if #items&amp;gt;0 then&lt;br /&gt;
		if mode == &amp;#039;bullet&amp;#039; then&lt;br /&gt;
			local ul = result:tag(&amp;#039;ul&amp;#039;)&lt;br /&gt;
			for ord, item in ipairs(items) do&lt;br /&gt;
				ul:tag(&amp;#039;li&amp;#039;):node(item)&lt;br /&gt;
			end&lt;br /&gt;
		elseif mode == &amp;#039;br&amp;#039; then&lt;br /&gt;
			for ord, item in ipairs(items) do&lt;br /&gt;
				if ord ~= 1 then&lt;br /&gt;
					result:tag(&amp;#039;br&amp;#039;)&lt;br /&gt;
				end&lt;br /&gt;
				result:node(item)&lt;br /&gt;
			end&lt;br /&gt;
		elseif mode == &amp;#039;sent&amp;#039; then&lt;br /&gt;
			for ord, item in ipairs(items) do&lt;br /&gt;
				if ord == 1 then&lt;br /&gt;
				elseif ord == #items then&lt;br /&gt;
					result:wikitext(#items == 2 and &amp;#039; &amp;#039; or &amp;#039;, &amp;#039;, &amp;#039;and &amp;#039;)&lt;br /&gt;
				else&lt;br /&gt;
					result:wikitext(&amp;#039;, &amp;#039;)&lt;br /&gt;
				end&lt;br /&gt;
				result:node(item)&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			error(&amp;#039;Invalid list format specified. Please revise [[Template:Item List]].&amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		if (args.category ~= nil) then&lt;br /&gt;
			result:node(require(&amp;#039;Module:Namespace detect&amp;#039;)._main({ main = categories }))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>ReisuDesign</name></author>
	</entry>
</feed>