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 makeWikitextError(msg)
return string.format(
'<strong class="error">[[Template:Section link]] error: %s.</strong>',
msg
)
end


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()
if #sections < 1 then
return makeWikitextError('at least one section must be specified')
end


-- 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, make the list of links.
-- 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 arguments for mw.text.listToText, unless we have
-- We use the default separator for mw.text.listToText, but a custom
-- exactly two sections, in which case we use a custom conjunction.
-- 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 = '&#8203; and '
conjunction = '&#8203; 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
Anonymous user