Module:Hatnote: Difference between revisions
Jump to navigation
Jump to search
Content added Content deleted
(tidy up the code now that we are adding colons to all the links) |
(Reverted 1 edit by Mr. Stradivarius (talk): Error in module:main while using module:sports table. (TW)) |
||
Line 28: | Line 28: | ||
-- Removes the initial colon from a string, if present. |
-- Removes the initial colon from a string, if present. |
||
return s:match('^:?(.*)') |
return s:match('^:?(.*)') |
||
end |
|||
function p.findNamespaceId(link, removeColon) |
|||
-- Finds the namespace id (namespace number) of a link or a pagename. This |
|||
-- function will not work if the link is enclosed in double brackets. Colons |
|||
-- are trimmed from the start of the link by default. To skip colon |
|||
-- trimming, set the removeColon parameter to true. |
|||
checkType('findNamespaceId', 1, link, 'string') |
|||
checkType('findNamespaceId', 2, removeColon, 'boolean', true) |
|||
if removeColon ~= false then |
|||
link = removeInitialColon(link) |
|||
end |
|||
local namespace = link:match('^(.-):') |
|||
if namespace then |
|||
local nsTable = mw.site.namespaces[namespace] |
|||
if nsTable then |
|||
return nsTable.id |
|||
end |
|||
end |
|||
return 0 |
|||
end |
end |
||
Line 115: | Line 135: | ||
function p._formatLink(link, display) |
function p._formatLink(link, display) |
||
-- Find whether we need to use the colon trick or not. We need to use the |
|||
-- colon trick for categories and files, as otherwise category links |
|||
-- categorise the page and file links display the file. |
|||
checkType('_formatLink', 1, link, 'string') |
checkType('_formatLink', 1, link, 'string') |
||
checkType('_formatLink', 2, display, 'string', true) |
checkType('_formatLink', 2, display, 'string', true) |
||
-- Remove the initial colon for links where it was specified manually. |
|||
link = removeInitialColon(link) |
link = removeInitialColon(link) |
||
local namespace = p.findNamespaceId(link, false) |
|||
local colon = ':' |
|||
-- The following lines were commented out to allow interwiki links to work, |
|||
-- as there is no harm in prefixing all links with colons. |
|||
-- if namespace == 6 or namespace == 14 then |
|||
-- colon = ':' |
|||
-- else |
|||
-- colon = '' |
|||
-- end |
|||
-- Find whether a faux display value has been added with the {{!}} magic |
-- Find whether a faux display value has been added with the {{!}} magic |
||
Line 139: | Line 169: | ||
-- Assemble the link. |
-- Assemble the link. |
||
if display then |
if display then |
||
return string.format('[[ |
return string.format('[[%s%s|%s]]', colon, link, display) |
||
else |
else |
||
return string.format('[[ |
return string.format('[[%s%s]]', colon, link) |
||
end |
end |
||
end |
end |