模块:PageLink
来自「荏苒之境」
此模块的文档可以在模块:PageLink/doc创建
local csv = require("Module:Csv")
local page_link = {}
local function format(page, text)
local t = {"[[", page, "|"}
if text ~= nil then
t[#t+1] = text
t[#t+1] = "]]"
return table.concat(t)
end
local section_pos = string.find(page, "#")
if section_pos then
t[#t+1] = string.sub(page, 1, section_pos - 1)
t[#t+1] = " § "
t[#t+1] = string.sub(page, section_pos + 1, #page)
t[#t+1] = "]]"
else
t[#t+1] = page.."]]"
end
return table.concat(t)
end
local function format_list(entries, divider, last_divider)
last_divider = last_divider or divider
local t = {}
for i, v in ipairs(entries) do
local entry = csv.parse_row(v, nil, "multiline")
local page = entry[1]
local text = entry[2] or page
t[#t+1] = format(page, text)
t[#t+1] = divider
end
if #t > 2 then
t[#t-2] = last_divider
end
t[#t] = nil
return table.concat(t)
end
page_link.format = format
page_link.format_list = format_list
page_link.show_list = function(frame)
local args = frame.args
local divider = args.divider
local last_divider = args.last_divider
if last_divider == nil or last_divider == "" then
last_divider = divider
end
return format_list(frame:getParent().args, divider, last_divider)
end
return page_link