Module:Hatnote: Difference between revisions

212 bytes added ,  10 years ago
split out the namespace-detecting part of formatLink to a new function
m>Mr. Stradivarius
m>Mr. Stradivarius
(split out the namespace-detecting part of formatLink to a new function)
Line 35: Line 35:
-- Helper functions
-- Helper functions
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
local function findNamespaceId(link)
-- 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 or if
-- the link has been escaped with the colon trick.
local namespace = link:match('^(.-):')
if namespace then
local nsTable = mw.site.namespaces[namespace]
if nsTable then
return nsTable.id
end
end
return 0
end


local function formatLink(link, display)
local function formatLink(link, display)
Line 45: Line 59:
-- colon trick for categories and files, as otherwise category links
-- colon trick for categories and files, as otherwise category links
-- categorise the page and file links display the file.
-- categorise the page and file links display the file.
local namespace = link:match('^(.-):')
local namespace = findNamespaceId(link)
local colon
local colon
if namespace and mw.site.namespaces[namespace] then
if namespace == 6 or namespace == 14 then
-- The start of the link is a valid namespace name; check whether it is
colon = ':'
-- a category or a file.
else
local nsid = mw.site.namespaces[namespace].id
colon = ''
if nsid == 6 or nsid == 14 then
colon = ':'
end
end
end
colon = colon or ''


-- Find the display value.
-- Find the display value.
Anonymous user