Module:Multi-section link: Difference between revisions
Appearance
Content deleted Content added
remove unnecessary do ... end block |
use the colon trick for files and categories |
||
Line 2: | Line 2: | ||
local p = {} |
local p = {} |
||
local function normalizePageName(page) |
|||
local title = mw.title.new(page) |
|||
if not title then |
|||
error(string.format("'%s' is not a valid page name", page), 3) |
|||
elseif title.namespace == 6 or title.namespace == 14 then |
|||
return ':' .. title.prefixedText |
|||
else |
|||
return title.prefixedText |
|||
end |
|||
end |
|||
function p._main(args) |
function p._main(args) |
||
Line 12: | Line 23: | ||
error('no page name found in parameter |1=', 2) |
error('no page name found in parameter |1=', 2) |
||
elseif nParts == 1 then |
elseif nParts == 1 then |
||
return string.format('[[%s]]', displayParts[1]) |
return string.format('[[%s]]', normalizePageName(displayParts[1])) |
||
else |
else |
||
local display = {} |
local display = {} |
||
Line 21: | Line 32: | ||
table.remove(display) -- Remove the extra "§§" markers from the end |
table.remove(display) -- Remove the extra "§§" markers from the end |
||
display = table.concat(display, ' ') |
display = table.concat(display, ' ') |
||
local page = displayParts[1] |
local page = normalizePageName(displayParts[1]) |
||
local fragment = displayParts[nParts] |
local fragment = displayParts[nParts] |
||
return string.format('[[%s#%s|%s]]', page, fragment, display) |
return string.format('[[%s#%s|%s]]', page, fragment, display) |
Revision as of 06:17, 23 March 2015
This module implements {{multi-section link}}. Please see the template documentation for usage instructions.
-- This module creates a section link with multiple section names.
local p = {}
local function normalizePageName(page)
local title = mw.title.new(page)
if not title then
error(string.format("'%s' is not a valid page name", page), 3)
elseif title.namespace == 6 or title.namespace == 14 then
return ':' .. title.prefixedText
else
return title.prefixedText
end
end
function p._main(args)
local displayParts = {}
for i, v in ipairs(args) do
displayParts[i] = v
end
local nParts = #displayParts
if nParts < 1 then
error('no page name found in parameter |1=', 2)
elseif nParts == 1 then
return string.format('[[%s]]', normalizePageName(displayParts[1]))
else
local display = {}
for i, s in ipairs(displayParts) do
table.insert(display, s)
table.insert(display, string.rep('§', i))
end
table.remove(display) -- Remove the extra "§§" markers from the end
display = table.concat(display, ' ')
local page = normalizePageName(displayParts[1])
local fragment = displayParts[nParts]
return string.format('[[%s#%s|%s]]', page, fragment, display)
end
end
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame, {
wrappers = 'Template:Multi-section link'
})
return p._main(args)
end
return p