Scatteraxis (talk | contribs) No edit summary |
Scatteraxis (talk | contribs) (Undo revision 223596 by Scatteraxis (talk)) Tag: Undo |
||
Line 10: | Line 10: | ||
local character = "default" | local character = "default" | ||
local numberOfTiers = tablelength(frame.args) | local numberOfTiers = tablelength(frame.args) | ||
local colors = {' | local colors = {'b8ff89', 'fdff89', 'ffdf7f', 'ffbf7f', 'e98d87', 'ff7ff0', 'd17fff', '7fbfff', '7feeff', '7fffc3' } -- an array of pre-defined colors | ||
for index=2,numberOfTiers do | for index=2,numberOfTiers do |
Latest revision as of 20:22, 22 July 2022
Module:Tier_List
is used to generate tier lists directly within the wiki using HTML, and the existing character labels.
Usage
A tier list requires that arguments be present in order.
- The abbreviation for the game (IE: SSBM, etc)
- The top tier
- All of the following tiers, ordered from top to bottom
Within a given tier, you must define the label for that tier (the letter that appears inside of the colored square) followed by a semicolon character (';').
Short Names in Labels
The tier list will attempt to find the appropriate icon and link for a given character. If you choose not to use the full name of a character, you must set up a necessary redirect from the short name to the full name. This applies to both the icon file and the character page itself.
For example: We want to show "Doc" on our tier list instead of "Dr. Mario". We must create 2 redirects.
- Redirect from
[[File:SSBM_Doc_Icon.png]]
to[[File:GGACR_Dr._Mario_Icon.png]]
- Redirect from
[[SSBM/Doc]]
to[[SSBM/Dr. Mario]]
Example
{{#invoke:Tier List|drawTierList |SSBM |S;Fox,Falco,Jigglypuff,Sheik |A;Marth,Peach,Captain Falcon |B;Ice Climbers |C;Doc,Ganondorf,Samus |D;Pikachu,Mario,Luigi,Donkey Kong |E;Link,Young Link |F;Zelda,Roy,Mewtwo,Yoshi,Mr. Game and Watch |G;Ness,Bowser,Kirby,Pichu }}
S
A
B
C
D
E
F
G
--[[ Module by Tarkus Lee from Dustloop Wiki --]] local p = {} function p.drawTierList(frame) local wikitext = "<div class=\"tierList\">" -- initialize the wikitext with the container for the list local GAME = frame.args[1]:gsub("%s+", "") -- capture the target game from the first arg local character = "default" local numberOfTiers = tablelength(frame.args) local colors = {'b8ff89', 'fdff89', 'ffdf7f', 'ffbf7f', 'e98d87', 'ff7ff0', 'd17fff', '7fbfff', '7feeff', '7fffc3' } -- an array of pre-defined colors for index=2,numberOfTiers do local currentTier = trim(frame.args[index]) -- use the argument at the current index as current tier data local tierLabel = string.match(currentTier, '(.*);') -- capture tier label from all characters before first ';' currentTier = string.match(currentTier, ";(.*)") -- remove the tier label from the current tier data --Inject tier label if index == 2 then -- first tier should have a rounded top corner wikitext = wikitext .. "<div class=\"tierHeader\" style=\"background-color: #" .. colors[1] .. "; border-top-left-radius: 4px;\">" .. tierLabel .. "</div>" elseif index == numberOfTiers then -- middle tiers are normal wikitext = wikitext .. "<div class=\"tierHeader\" style=\"background-color: #" .. colors[index-1] .. "; border-bottom-left-radius: 4px;\">" .. tierLabel .. "</div>" else -- final tier has a roudned bottom corner wikitext = wikitext .. "<div class=\"tierHeader\" style=\"background-color: #" .. colors[index-1] .. ";\">" .. tierLabel .. "</div>" end -- open a new tier container if index ~= numberOfTiers then wikitext = wikitext .. "<div class=\"tierGroup tierUnderline\">" else -- final tier does not have an underline wikitext = wikitext .. "<div class=\"tierGroup\">" end -- iterate over tokens in current tier, sperrated by ',' character for token in string.gmatch(currentTier, '([^,]+)') do character = token -- inject character label local characterLabel = frame:expandTemplate{ title = 'Character Label', args = { GAME, character, '32px' } } wikitext = wikitext .. "<div>" .. characterLabel .. "</div>" end -- close the current tier container wikitext = wikitext .. "</div>" end -- close the entire tier list wikitext = wikitext .. "</div>" return wikitext end -- Return the size of a table by iterating over it and counting function tablelength(T) local count = 0 for _ in pairs(T) do count = count + 1 end return count end function trim(s) return (string.gsub(s, "^%s*(.-)%s*$", "%1")) end return p