Module:Section link: Difference between revisions
fix error placement and tweak default conjunction
m>Mr. Stradivarius (create replacement for Template:Section link) |
m>Mr. Stradivarius (fix error placement and tweak default conjunction) |
||
Line 4: | Line 4: | ||
local p = {} | local p = {} | ||
local function makeSectionLink(page, section, display) | local function makeSectionLink(page, section, display) | ||
Line 32: | Line 25: | ||
options = options or {} | options = options or {} | ||
title = title or mw.title.getCurrentTitle() | title = title or mw.title.getCurrentTitle() | ||
-- Make the link(s). | -- Make the link(s). | ||
Line 48: | Line 38: | ||
return makeSectionLink(linkPage, section, display) | return makeSectionLink(linkPage, section, display) | ||
else | else | ||
-- Multiple sections. First, | -- Multiple sections. First, validate the sections table. | ||
if #sections < 1 then | |||
error('at least one section must be specified', 2) | |||
end | |||
-- Make the list of links. | |||
local ret = {} | local ret = {} | ||
for i, section in ipairs(sections) do | for i, section in ipairs(sections) do | ||
ret[i] = makeSectionLink(page, section) | ret[i] = makeSectionLink(page, section) | ||
end | end | ||
-- Assemble the list of links into a string with mw.text.listToText. | -- Assemble the list of links into a string with mw.text.listToText. | ||
-- We use the default | -- We use the default separator for mw.text.listToText, but a custom | ||
-- | -- conjunction. There is also a special case conjunction if we only | ||
-- have two links. | |||
local conjunction | local conjunction | ||
if #sections == 2 then | if #sections == 2 then | ||
conjunction = '​ and ' | conjunction = '​ and ' | ||
else | |||
conjunction = ', and ' | |||
end | end | ||
ret = mw.text.listToText(ret, nil, conjunction) | ret = mw.text.listToText(ret, nil, conjunction) | ||
Line 69: | Line 67: | ||
end | end | ||
ret = intro .. ret | ret = intro .. ret | ||
return ret | return ret | ||
end | end | ||
Line 107: | Line 105: | ||
end | end | ||
sections = compressArray(sections) | sections = compressArray(sections) | ||
return p._main(page, sections, options) | return p._main(page, sections, options) | ||
end | end | ||
return p | return p |