Module:RecipeLinks: Difference between revisions
Appearance
Created page with "local p = {} function p.fromDelimited(frame) -- 1) Raw string (first unnamed argument) and optional “delimiter” local raw = frame.args[1] or "" local delimiter = frame.args.delimiter or "," -- 2) Split on delimiter, then trim each piece and filter out any blank strings local list = mw.text.split(raw, delimiter) local items = {} for _, entry in ipairs(list) do local trimmed = mw.text.trim(entry) if trimmed ~= "" then..." |
m Protected "Module:RecipeLinks" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)) |
(No difference)
| |
Revision as of 19:59, 30 May 2025
Documentation for this module may be created at Module:RecipeLinks/doc
local p = {}
function p.fromDelimited(frame)
-- 1) Raw string (first unnamed argument) and optional “delimiter”
local raw = frame.args[1] or ""
local delimiter = frame.args.delimiter or ","
-- 2) Split on delimiter, then trim each piece and filter out any blank strings
local list = mw.text.split(raw, delimiter)
local items = {}
for _, entry in ipairs(list) do
local trimmed = mw.text.trim(entry)
if trimmed ~= "" then
table.insert(items, trimmed)
end
end
-- 3) If no valid items, return empty string
if #items == 0 then
return ""
end
-- 4) Helper to convert a single “item” into a [[PageName]] link
local function makeLink(item)
return string.format("[[%s]]", item)
end
-- 5) If exactly one entry, return just the single link
if #items == 1 then
return makeLink(items[1])
end
-- 6) Otherwise, wrap each link in a <li> inside a <ul>
local output = {}
table.insert(output, '<ul style="margin-left: 1em;">')
for _, entry in ipairs(items) do
table.insert(output, string.format(" <li>%s</li>", makeLink(entry)))
end
table.insert(output, "</ul>")
return table.concat(output, "\n")
end
return p