Module:Hatnote: Difference between revisions
Jump to navigation
Jump to search
Reverted 1 edit by Mr. Stradivarius (talk): Error in module:main while using module:sports table. (TW)
>Mr. Stradivarius (tidy up the code now that we are adding colons to all the links) |
>Qed237 (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) | ||
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 |