| https://akurasu.net/downloads/Mazin_head.png | Come hang out with us in the Discord server.
Account creation is disabled due to spam. If you want to help out on the Wiki, poke us in on our Discord server in #wiki. Please consider supporting the site with the PlayAsia referral links here or via the donate buttons in the sidebar, it really does help. | https://akurasu.net/downloads/Flonne_cheer.png |
Module:CategoryTable: Difference between revisions
From Akurasu
Jump to navigationJump to search
No edit summary |
Undo revision 64866 by Youkou Kaiser 357 (talk) Tag: Undo |
||
| Line 88: | Line 88: | ||
end -- for | end -- for | ||
out:append( | out:append("<tabs>") | ||
for _, cat in ipairs(Split(category_names,",")) do | for _, cat in ipairs(Split(category_names,",")) do | ||
out:append_format('< | out:append_format('<tab name="%s">', cat) | ||
if class == nil then | if class == nil then | ||
out:append_line("<table>") | out:append_line("<table>") | ||
| Line 111: | Line 111: | ||
end | end | ||
out:append("</table>") | out:append("</table>") | ||
out:append('</ | out:append('</tab>') | ||
end | end | ||
out:append_line( | out:append_line("</tabs>") | ||
return frame:preprocess(out:tostring()) | return frame:preprocess(out:tostring()) | ||
end | end | ||
return p | return p | ||
Latest revision as of 04:58, 26 August 2025
Documentation for this module may be created at Module:CategoryTable/doc
--{{#invoke:CategoryTable|main|ListSource=SRW30PartsList|Categories=All,Mechs,Attack,Defense,Move,Spirit,Consumable,Bonus,Special|class="oddeven"}}
--All is a special category, everything will show up in this category if it's listed.
StringBuilder = require("Module:StringBuilder")
require("Module:Split")
local p = {}
function p.main(frame)
local cat_list_page = frame.args['ListSource']
local category_names = frame.args['Categories']
local class = frame.args['class']
return p.render(frame, cat_list_page, category_names, class)
end
function p.render(frame, cat_list_page, category_names, class)
local string_data = frame:expandTemplate{ title = cat_list_page }
string_data = string.gsub(string_data, "\n", "")
local all = true
if Split(category_names,",")["All"] ~= nil then
all = false
end
out = StringBuilder()
cat_data = {}
if all == true then
-- If All is in Category List, make it the first Category
cat_data["All"] = {}
end
cat_data_header = {}
cat_data_align = {}
for i, line in ipairs(Split(string_data, ";")) do
if i == 1 then
-- Process header line here
for h, jline in ipairs(Split(line, "|")) do
cat_data_align[h] = 0
cleanline = jline:gsub("^%s*(.-)%s*$", "%1") -- not sure you need to trim whitespace
if string.sub(cleanline, 1, 1) == "*" then
cat_data_align[h] = cat_data_align[h] + 1
cleanline = cleanline:sub(2)
end
if string.sub(cleanline, -1) == "*" then
cat_data_align[h] = cat_data_align[h] + 2
cleanline = cleanline:sub(1, -2)
end -- if string
table.insert(cat_data_header, cleanline)
end -- for
else
if #line ~= 0 then
row = Split(line, "|")
cat = Split(row[1], ",")
--part = table.concat(row, "<td>", 2)
outputline = StringBuilder()
for k, dat in ipairs(row) do
if k > 1 then
-- Align Right
if cat_data_align[k] == 2 then
outputline:append("<td style='text-align:right;'>")
-- Align Center
elseif cat_data_align[k] == 3 then
outputline:append("<td style='text-align:center;'>")
-- Align Left
else
outputline:append("<td>")
end
outputline:append(dat .. "</td>")
end
end
part = outputline:tostring()
if all then
table.insert(cat_data["All"], part)
end
for j, cat in ipairs(Split(row[1], ",")) do
if cat_data[cat] == nil then cat_data[cat] = {} end
table.insert(cat_data[cat], part)
end -- end for
end -- if len(line)==0
end -- if i == 1
end -- for
out:append("<tabs>")
for _, cat in ipairs(Split(category_names,",")) do
out:append_format('<tab name="%s">', cat)
if class == nil then
out:append_line("<table>")
else
out:append_line("<table class=" .. class .. ">")
end
if cat_data[cat] ~= nil then
-- Output Table Header here
out:append_line("<tr>")
for i, hline in ipairs(cat_data_header) do
if i > 1 then
out:append("<th>" .. hline .. "</th>")
end
end
out:append("</tr>")
-- Output data lines
for h, oline in ipairs(cat_data[cat]) do
out:append_line("<tr>" .. oline .. "</tr>")
end
end
out:append("</table>")
out:append('</tab>')
end
out:append_line("</tabs>")
return frame:preprocess(out:tostring())
end
return p