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

Well it's not that slow, but the table is still ridiculously large. Doesn't seem worth having.
m 1 revision imported
 
(7 intermediate revisions by 4 users not shown)
Line 1: Line 1:
local p = {}
local p = {}
p.table = function()
p.table = function()
local slot = require( [[Module:Inventory slot]] ).slot
local slot = require( [[Module:Inventory slot]] )
local aliases = mw.loadData( [[Module:Inventory slot/Aliases]] )
local aliases = mw.loadData( [[Module:Inventory slot/Aliases]] )
 
local keys = {}
local aliasNames = {}
for i in pairs( aliases ) do
local aI = 1
for name in pairs( aliases ) do
-- Skip the banner aliases (except "Any Banner"), as there are so
-- Skip the banner aliases (except "Any Banner"), as there are so
-- many of them it causes the table to be excessively long
-- many of them it causes the table to be excessively long
if i == 'Any Banner' or not i:find( ' Banner$' ) then
if
table.insert( keys, i )
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, slot{ name, noalias = true } )
end
end
 
table.insert( tableRows, '|<code>' .. key .. '</code>||' .. 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