Module:DigimonTab: Difference between revisions
Appearance
imported>Ziebster No edit summary |
imported>Ziebster No edit summary |
||
| Line 21: | Line 21: | ||
end | end | ||
table.sort(summonable, function(a,b) return mw.text.unstripNoWiki(a.name) < mw.text.unstripNoWiki(b.name) end) | |||
table.sort(unsummonable, function(a,b) return mw.text.unstripNoWiki(a.name) < mw.text.unstripNoWiki(b.name) end) | |||
local function buildGrid(entries) | local function buildGrid(entries) | ||
local rows = "" | local rows = "" | ||
local max_pairs = | local max_pairs = 4 -- 4 pairs (8 columns) per row; reduce to 3 if scroll appears | ||
for i = 1, #entries, max_pairs do | for i = 1, #entries, max_pairs do | ||
rows = rows .. "|-\n" | rows = rows .. "|-\n" | ||
local row_cells = {} | |||
for j = 0, max_pairs - 1 do | for j = 0, max_pairs - 1 do | ||
local idx = i + j | local idx = i + j | ||
if idx <= #entries then | if idx <= #entries then | ||
table.insert(row_cells, entries[idx].image) | |||
table.insert(row_cells, entries[idx].name) | |||
end | end | ||
end | end | ||
rows = rows .. "\n" | rows = rows .. "| " .. table.concat(row_cells, " || ") .. "\n" | ||
end | end | ||
return rows | return rows | ||
Revision as of 08:08, 5 January 2026
Example Usage:
<tabber>
|-|Example=<div class="mobileonly"><h3>Example</h3></div>
{{#invoke:DigimonTab|show|Exam|Ex}}
</tabber>
- Example = Version tabber label
- Exam = Master List device tag
- Ex = Footnote tag (if applicable)
local p = {}
function p.show(frame)
local versionTag = frame.args[1] or (frame:getParent() and frame:getParent().args[1]) or "Error: No version tag"
local data = mw.loadData("Module:MasterList")
local summonable, unsummonable = {}, {}
for _, digimon in ipairs(data) do
for i, v in ipairs(digimon.versions or {}) do
if v == versionTag then
local status = digimon.summonable[i] or "Yes"
local entry = {
image = digimon.image and digimon.image ~= "" and "[[File:" .. digimon.image .. "|50px]]" or "",
name = digimon.name
}
if status == "''Yes''" then entry.name = entry.name .. "<ref>You need another device with a similar Battle Type in order to battle with this Digimon.</ref>" end
table.insert(status == "No" and unsummonable or summonable, entry)
break
end
end
end
table.sort(summonable, function(a,b) return mw.text.unstripNoWiki(a.name) < mw.text.unstripNoWiki(b.name) end)
table.sort(unsummonable, function(a,b) return mw.text.unstripNoWiki(a.name) < mw.text.unstripNoWiki(b.name) end)
local function buildGrid(entries)
local rows = ""
local max_pairs = 4 -- 4 pairs (8 columns) per row; reduce to 3 if scroll appears
for i = 1, #entries, max_pairs do
rows = rows .. "|-\n"
local row_cells = {}
for j = 0, max_pairs - 1 do
local idx = i + j
if idx <= #entries then
table.insert(row_cells, entries[idx].image)
table.insert(row_cells, entries[idx].name)
end
end
rows = rows .. "| " .. table.concat(row_cells, " || ") .. "\n"
end
return rows
end
local out = (#summonable > 0 and "='''Summonable Digimon'''=\n{| class=\"fandom-table\"\n" .. buildGrid(summonable) .. "|}\n" or "") ..
(#unsummonable > 0 and "='''Unsummonable Digimon'''=\n{| class=\"fandom-table\"\n" .. buildGrid(unsummonable) .. "|}\n" or (#summonable == 0 and "''No Digimon in this version.''\n" or ""))
return frame:preprocess(out)
end
return p