Module:Inventory slot/Aliases/Table: Difference between revisions

From Modded Wiki
Jump to navigation Jump to search
Since the aliases table now contains actual code, it's not going to cut it to display what aliases are available.
 
m 11 revisions imported
 
(10 intermediate revisions by 2 users not shown)
Line 1: Line 1:
local p = {}
local p = {}
p.table = function()
p.table = function()
local grid = require( [[Module:Grid]] ).cell
local slot = require( [[Module:Inventory slot]] )
local aliases = mw.loadData( [[Module:Grid/Aliases]] )
local aliases = mw.loadData( [[Module:Inventory slot/Aliases]] )
 
local keys = {}
local aliasNames = {}
for i, v in pairs( aliases ) do
local aI = 1
-- Skip the banner aliases, as there are so many of them it causes the
for name in pairs( aliases ) do
-- page to be too slow. Maybe once we use sprites it will be fast enough.
-- Skip the banner aliases (except "Any Banner"), as there are so
if not i:find( 'Banner$' ) then
-- many of them it causes the table to be excessively long
table.insert( keys, i )
if
name == 'Any Banner' or
not name:find( ' Banner$' ) and
not name:find( '^Matching ' ) or
not aliases[name:gsub( '^Matching', 'Any' )]
then
aliasNames[aI] = name
aI = aI + 1
end
end
end
end
table.sort( keys )
table.sort( aliasNames )
 
local tableRows = {
local tableRows = {
' {| class="wikitable collapsible collapsed"',
' {| class="wikitable collapsible collapsed"',
'! Alias !! class="collapse-button" | Output'
'! Alias !! Output'
}
}
for _, key in ipairs( keys ) do
local rI = #tableRows + 1
local alias = aliases[key]
for _, name in ipairs( aliasNames ) do
local alias = slot.getAlias( aliases[name], {} )
local displayCell = {}
 
for name in mw.text.gsplit( alias, '%s*;%s*' ) do
local cell = {}
-- Aliases are disabled in output for accuracy
for i, frame in ipairs( alias ) do
-- (as sub-aliases aren't meant to work) and performance
cell[i] = slot.slot{ { frame }, parsed = true }
table.insert( displayCell, grid{ name, noalias = true } )
end
end
 
table.insert( tableRows, '|' .. key .. '||' .. table.concat( displayCell ) )
local aliasText = mw.html.create()
aliasText:tag( 'code' ):wikitext( name )
if name:find( '^Any ' ) then
local altName = name:gsub( '^Any', 'Matching' )
if aliases[altName] then
aliasText:tag( 'br' ):done()
:tag( 'code' ):wikitext( altName )
end
end
 
tableRows[rI] = '|' .. tostring( aliasText ) .. '||' .. table.concat( cell )
rI = rI + 1
end
end
table.insert( tableRows, '|}' )
tableRows[rI] = '|}'
 
return table.concat( tableRows, '\n|-\n' )
return table.concat( tableRows, '\n|-\n' )
end
end
return p
return p

Latest revision as of 08:10, 4 July 2024

Documentation for this module may be created at Module:Inventory slot/Aliases/Table/doc

local p = {}
p.table = function()
	local slot = require( [[Module:Inventory slot]] )
	local aliases = mw.loadData( [[Module:Inventory slot/Aliases]] )

	local aliasNames = {}
	local aI = 1
	for name in pairs( aliases ) do
		-- Skip the banner aliases (except "Any Banner"), as there are so
		-- many of them it causes the table to be excessively long
		if
			name == 'Any Banner' or
			not name:find( ' Banner$' ) and
			not name:find( '^Matching ' ) or
			not aliases[name:gsub( '^Matching', 'Any' )]
		then
			aliasNames[aI] = name
			aI = aI + 1
		end
	end
	table.sort( aliasNames )

	local tableRows = {
		' {| class="wikitable collapsible collapsed"',
		'! Alias !! Output'
	}
	local rI = #tableRows + 1
	for _, name in ipairs( aliasNames ) do
		local alias = slot.getAlias( aliases[name], {} )

		local cell = {}
		for i, frame in ipairs( alias ) do
			cell[i] = slot.slot{ { frame }, parsed = true }
		end

		local aliasText = mw.html.create()
		aliasText:tag( 'code' ):wikitext( name )
		if name:find( '^Any ' ) then
			local altName = name:gsub( '^Any', 'Matching' )
			if aliases[altName] then
				aliasText:tag( 'br' ):done()
					:tag( 'code' ):wikitext( altName )
			end
		end

		tableRows[rI] = '|' .. tostring( aliasText ) .. '||' .. table.concat( cell )
		rI = rI + 1
	end
	tableRows[rI] = '|}'

	return table.concat( tableRows, '\n|-\n' )
end
return p