Jump to content

Module:Icon/table

From Humanipedia

This module creates a test case template using data aggregated from Module:Icon/data and Module:Icon/data/sandbox. It is intended to be displayed at Template:Icon/testcases.

Usage[edit source]

{{#invoke:icon/table|main}}

Output[edit source]

Icon Description Code Aliases
Lua error in package.lua at line 80: module 'Module:Yesno' not found. A-Class article {{icon|a}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Audited article of limited subject matter {{icon|aa}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. A-Class article candidate {{icon|acc}} aac, acn
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Administrator {{icon|admin}} mop
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Black alert {{icon|alert}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Black, white, and red alert {{icon|alert-blackred}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Green alert {{icon|alert-constructive}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Alert {{icon|alert-imagewarning}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. B-Class article {{icon|b}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Original barnstar {{icon|barnstar}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Original barnstar hires {{icon|barnstar2}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Wikipedia book {{icon|book}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Bplus-Class article {{icon|bplus}} b+
Lua error in package.lua at line 80: module 'Module:Yesno' not found. B-Class review {{icon|br}} bcr
Lua error in package.lua at line 80: module 'Module:Yesno' not found. C-Class article {{icon|c}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Category {{icon|category}} cat, categ
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Cleanup work {{icon|cleanup}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Commons page {{icon|commons}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Demoted article {{icon|da}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Demoted A-Class article {{icon|dac}} daa
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Delisted good article {{icon|dga}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Disambiguation page {{icon|disambiguation}} dab, disamb, disambig
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Discussion {{icon|discussionnotificaion}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Draft-Class article {{icon|draft}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Did You Know? {{icon|dyk}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Did You Know? {{icon|dyk2}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Essay {{icon|essay}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Featured article {{icon|fa}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Featured article candidate {{icon|fac}} fan
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Featured article review {{icon|far}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Featured article removal candidate {{icon|farc}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Former featured article {{icon|ffa}} dfa
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Former featured article candidate {{icon|ffac}} nofa
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Former featured list {{icon|ffl}} dfl
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Former featured list candidate {{icon|fflc}} nofl
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Former featured picture {{icon|ffp}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Former featured portal {{icon|ffpo}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Former featured sound {{icon|ffs}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Former featured topic {{icon|fft}} dft
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Failed good article nominee {{icon|fgan}} gaf, gf, noga
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Featured list {{icon|fl}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Featured list candidate {{icon|flc}} fln
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Featured list removal candidate {{icon|flrc}} flr
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Four Award {{icon|four}} 4a
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Featured picture {{icon|fp}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Featured picture candidate {{icon|fpc}} fpn
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Before the featured portal process ceased in 2017, this had been designated as a featured portal. {{icon|fpo}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Featured portal candidate {{icon|fpoc}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Featured portal review {{icon|fpor}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Featured sound {{icon|fs}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Featured sound candidate {{icon|fsc}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Featured topic {{icon|ft}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Featured topic candidate {{icon|ftc}} ftn
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Featured topic removal candidate {{icon|ftrc}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Good article {{icon|ga}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Good article, 2nd opinion {{icon|ga2}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Good article on hold {{icon|gah}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Good article nominee {{icon|gan}} gac
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Good article reassessment {{icon|gar}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Guild of Copy Editors {{icon|goce}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Good topic {{icon|gt}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Good topic candidate {{icon|gtc}} gtn
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Good topic removal candidate {{icon|gtrc}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. File {{icon|image}} file
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Information {{icon|info}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. In The News {{icon|itn}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. List-Class article {{icon|list}} comparison
Lua error in package.lua at line 80: module 'Module:Yesno' not found. MediaWiki {{icon|mediawiki}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Meta-wiki page {{icon|meta}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Million Award {{icon|million}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Module {{icon|module}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Non-article page {{icon|na}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Needed article {{icon|needed}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Unknown-Class article {{icon|no}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Failed A-Class article candidate {{icon|noac}} faac
Lua error in package.lua at line 80: module 'Module:Yesno' not found. On This Day {{icon|otd}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Outline {{icon|outline}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Phabricator {{icon|phabricator}} phab
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Portal {{icon|portal}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Picture of the Day {{icon|potd}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Portal peer review {{icon|ppr}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Peer review {{icon|pr}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Project page {{icon|project}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Question {{icon|q}} question
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Quality image on Wikimedia Commons {{icon|qi}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Redirect {{icon|redirect}} red, redir
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Start-Class article {{icon|start}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Stub-Class article {{icon|stub}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Template {{icon|template}} temp, templ
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Today's Featured Article {{icon|tfa}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Today's Featured List {{icon|tfl}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. User-Class article {{icon|user}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Valued image on Wikimedia Commons {{icon|vi}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Vital article {{icon|vital}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Valued picture {{icon|vp}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Valued picture candidate {{icon|vpc}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Wikibooks page {{icon|wikibooks}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Wikidata page {{icon|wikidata}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Wikinews page {{icon|wikinews}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Wikipedia page {{icon|wikipedia}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. WikiProject {{icon|wikiproject}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Wikiquote page {{icon|wikiquote}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Wikisource page {{icon|wikisource}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Wikispecies page {{icon|wikispecies}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Wikitech {{icon|wikitech}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Wikiversity page {{icon|wikiversity}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Wikivoyage page {{icon|wikivoyage}}
Lua error in package.lua at line 80: module 'Module:Yesno' not found. Wiktionary page {{icon|wiktionary}}



-- Create a table of icons to display on the template test case page

require('strict')

local p = {}
local m_iconData = mw.loadData("Module:Icon/data")
local m_iconSandboxData = mw.loadData("Module:Icon/data/sandbox")

local function mergeTables(...)
	local ret = {}
	for _, t in ipairs{...} do
		for k, v in pairs(t) do
			ret[k] = v
		end
	end
	return ret
end

local function reconstituteAliases(iconDataCollection)
	local ret = {}
	for code, iconData in pairs(iconDataCollection) do
		local outputData = ret[iconData.canonicalCode] or {
			aliases = {},
			image = iconData.image,
			tooltip = iconData.tooltip,
			link = iconData.link,
		}
		if code ~= iconData.canonicalCode then
			table.insert(outputData.aliases, code)
		end
		ret[iconData.canonicalCode] = outputData
	end
	return ret
end

local function makeTableData(iconDataCollection)
	local ret = {}
	for code, iconData in pairs(reconstituteAliases(iconDataCollection)) do
		if code ~= '_DEFAULT' then
			table.insert(ret, {code = code, description = iconData.tooltip, aliases = iconData.aliases})
		end
	end
	table.sort(
		ret,
		function(t1, t2)
			return t1.code < t2.code
		end
	)
	for _, t in ipairs(ret) do
		table.sort(t.aliases)
	end
	return ret
end

function p.testcases(frame)
	local tableData = makeTableData(mergeTables(m_iconData, m_iconSandboxData))
	local ret = {
		'{| class="wikitable sortable"',
		'! Code',
		'! [[Template:Icon|Template]]',
		'! [[Template:Icon/sandbox|Sandbox]]',
		'! Description',
	}
	
	local function addRow(code, description)
		table.insert(ret, '|-')
		table.insert(ret, '| <code>' .. mw.text.nowiki('{{icon|' .. code .. '}}') .. '</code>')
		table.insert(ret, '| style="text-align: center" | ' .. frame:expandTemplate{title = 'icon', args = {code}})
		table.insert(ret, '| style="text-align: center" | ' .. frame:expandTemplate{title = 'icon/sandbox', args = {code}})
		table.insert(ret, '| ' .. description)
	end
	
	for _, rowData in ipairs(tableData) do
		addRow(rowData.code, rowData.description)
		for _, alias in ipairs(rowData.aliases) do
			addRow(alias, rowData.description)
		end
	end
	table.insert(ret, '|}')
	return table.concat(ret, '\n')
end

function p.main(frame)
	local tableData = makeTableData(m_iconData)
	local ret = {
		'{| class="wikitable sortable"',
		'! Icon',
		'! Description',
		'! Code',
		'! Aliases'
	}
	for _, rowData in ipairs(tableData) do
		table.insert(ret, '|-')
		table.insert(ret, '| style="text-align: center" | ' .. frame:expandTemplate{title = 'icon', args = {rowData.code}})
		table.insert(ret, '| ' .. rowData.description)
		table.insert(ret, '| <code>' .. mw.text.nowiki('{{icon|' .. rowData.code .. '}}') .. '</code>')
		local aliasText = {}
		for _, alias in ipairs(rowData.aliases) do
			table.insert(aliasText, '<code>' .. alias .. '</code>')
		end
		table.insert(ret, '| ' .. table.concat(aliasText, ', '))
	end
	table.insert(ret, '|}')
	return table.concat(ret, '\n')
end

return p