Module:RequirementBox: Difference between revisions
no edit summary
Admin Jeremy (talk | contribs) No edit summary |
Admin Jeremy (talk | contribs) No edit summary |
||
| Line 4: | Line 4: | ||
if list == "" then return "" end | if list == "" then return "" end | ||
local | local blocks = {} | ||
local current = nil | |||
-- Split | -- Split into lines and group into bullet blocks | ||
for line in list:gmatch("[^\r\n]+") do | for line in list:gmatch("[^\r\n]+") do | ||
line = mw.text.trim(line) | line = mw.text.trim(line) | ||
if line:sub(1,1) == "*" then | |||
if line:sub(1, 1) == "*" then | -- start new requirement block | ||
if current then | |||
table.insert(blocks, current) | |||
end | |||
current = mw.text.trim(line:sub(2)) | |||
elseif current then | |||
-- continuation of previous requirement | |||
current = current .. "\n" .. line | |||
end | |||
end | |||
if current then | |||
table.insert(blocks, current) | |||
end | |||
local out = "" | |||
for _, block in ipairs(blocks) do | |||
if block:find("||OR||", 1, true) then | |||
local parts = mw.text.split(block, "||OR||", true) | |||
out = out .. '<li class="vp-requirement-or">' | |||
for i, part in ipairs(parts) do | |||
out = out .. '<div class="vp-requirement-or-option">' .. | |||
mw.text.trim(part) .. '</div>' | |||
if i < #parts then | |||
out = out .. '<div class="vp-requirement-or-divider">OR</div>' | |||
end | end | ||
end | end | ||
out = out .. '</li>' | |||
else | |||
out = out .. '<li>' .. block .. '</li>' | |||
end | end | ||
end | end | ||
| Line 43: | Line 56: | ||
</div>]], title, out) | </div>]], title, out) | ||
end | end | ||