Difference between revisions of "User:DarthPhallus/GGSTCharNavTable/doc"

From Dustloop Wiki
Jump to navigation Jump to search
Line 1: Line 1:
 
{{User:DarthPhallus/GGSTCharNavTable}}
 
{{User:DarthPhallus/GGSTCharNavTable}}
  
Want it to look like this
+
<pre>
 +
local p = {}
  
Problems:
+
function p.drawTierList(frame)
* Needs to navigate to the right page, just doing link=#character works but might have issues on edge cases? May need to figure out how magicwords work. https://www.mediawiki.org/wiki/Help:Magic_words#URL_data
+
  local wikitext = "<div class=\"tierList\">" -- initialize the wikitext with the container for the list
* Table might need some light styling. Get rid of cell borders?
+
  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
 +
</pre>
 +
 
 +
Understanding Lua:
 +
* Index starts at 1 not 0.
 +
 
 +
* Line 1 ????
 +
* Line 3 Creating a function called drawTierList, frame is the arguments. Can be multiple.
 +
* Line 4 Not 100% sure, creating the class that holds the whole tierlist?
 +
* Line 5 finding the name of the game by pulling the first argument from args, need to figure out what gsub is doing.

Revision as of 20:58, 5 August 2022

local p = {}

function p.drawTierList(frame)

local wikitext = "

" -- 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 .. "
" .. tierLabel .. "
"
   elseif index == numberOfTiers then -- middle tiers are normal
wikitext = wikitext .. "
" .. tierLabel .. "
"
   else -- final tier has a roudned bottom corner
wikitext = wikitext .. "
" .. tierLabel .. "
"
   end
   
   -- open a new tier container
   if index ~= numberOfTiers then 
wikitext = wikitext .. "
"
   else -- final tier does not have an underline
wikitext = wikitext .. "
"
   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 .. "
" .. characterLabel .. "
"
   end
 
   -- close the current tier container
wikitext = wikitext .. "
"
 end
 -- close the entire tier list
wikitext = wikitext .. "
"
 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

 
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

Understanding Lua:

  • Index starts at 1 not 0.
  • Line 1 ????
  • Line 3 Creating a function called drawTierList, frame is the arguments. Can be multiple.
  • Line 4 Not 100% sure, creating the class that holds the whole tierlist?
  • Line 5 finding the name of the game by pulling the first argument from args, need to figure out what gsub is doing.