Module:Hatnote: Difference between revisions

1,122 bytes added ,  8 years ago
Reverted 1 edit by Mr. Stradivarius (talk): Error in module:main while using module:sports table. (TW)
m>Mr. Stradivarius
(tidy up the code now that we are adding colons to all the links)
m>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)
-- 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('[[:%s|%s]]', link, display)
return string.format('[[%s%s|%s]]', colon, link, display)
else
else
return string.format('[[:%s]]', link)
return string.format('[[%s%s]]', colon, link)
end
end
end
end
Anonymous user