Module:Icon/table

    From Nonbinary Wiki
    Wikipedia logo This module uses material from the Wikipedia module Module:Icon/table, which is released under the Creative Commons Attribution-ShareAlike 3.0 Unported License (view authors).

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