Chain: Difference between revisions
From Project Rebearth
Created page with "local p = {} function p.render(frame) local args = frame.args local parent = frame:getParent() local pargs = parent and parent.args or {} local items = {} for i = 1, 15 do local val = args[i] or pargs[i] if val then val = mw.text.trim(val) if val ~= '' then items[#items + 1] = val end end end if #items < 1 then return '' end local title = args.title..." |
No edit summary |
||
| Line 41: | Line 41: | ||
for i, name in ipairs(items) do | for i, name in ipairs(items) do | ||
if i > 1 then | if i > 1 then | ||
root:tag('div') | root:tag('div') | ||
| Line 48: | Line 47: | ||
end | end | ||
local isResource = (i % 2 == 1) | local isResource = (i % 2 == 1) | ||
local step = root:tag('div') | local step = root:tag('div') | ||
:addClass('rb-chain-step') | :addClass('rb-chain-step') | ||
:addClass(isResource and 'rb-chain-resource' or 'rb-chain-building') | |||
local label = isResource | |||
and frame:expandTemplate{ title = 'Icon', args = { name } } | |||
or '[[' .. name .. ']]' | |||
step:wikitext(label) | |||
end | end | ||
Revision as of 14:00, 26 February 2026
Documentation for this module may be created at Module:Chain/doc
local p = {}
function p.render(frame)
local args = frame.args
local parent = frame:getParent()
local pargs = parent and parent.args or {}
local items = {}
for i = 1, 15 do
local val = args[i] or pargs[i]
if val then
val = mw.text.trim(val)
if val ~= '' then
items[#items + 1] = val
end
end
end
if #items < 1 then
return ''
end
local title = args.title or pargs.title or ''
title = mw.text.trim(title)
local direction = args.direction or pargs.direction or ''
direction = mw.text.trim(direction):lower()
local isVertical = (direction == 'vertical')
local root = mw.html.create('div')
:addClass('rb-chain')
if isVertical then
root:addClass('rb-chain-vertical')
end
if title ~= '' then
root:tag('div')
:addClass('rb-chain-title')
:wikitext(title)
end
for i, name in ipairs(items) do
if i > 1 then
root:tag('div')
:addClass('rb-chain-arrow')
:wikitext('→')
end
local isResource = (i % 2 == 1)
local step = root:tag('div')
:addClass('rb-chain-step')
:addClass(isResource and 'rb-chain-resource' or 'rb-chain-building')
local label = isResource
and frame:expandTemplate{ title = 'Icon', args = { name } }
or '[[' .. name .. ']]'
step:wikitext(label)
end
return tostring(root)
end
return p