Editing Module:Hatnote
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 9: | Line 9: | ||
local libraryUtil = require('libraryUtil') | local libraryUtil = require('libraryUtil') | ||
local checkType = libraryUtil.checkType | local checkType = libraryUtil.checkType | ||
− | |||
local mArguments -- lazily initialise [[Module:Arguments]] | local mArguments -- lazily initialise [[Module:Arguments]] | ||
local yesno -- lazily initialise [[Module:Yesno]] | local yesno -- lazily initialise [[Module:Yesno]] | ||
Line 35: | Line 34: | ||
-- function will not work if the link is enclosed in double brackets. Colons | -- 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 | -- are trimmed from the start of the link by default. To skip colon | ||
− | -- trimming, set the removeColon parameter to | + | -- trimming, set the removeColon parameter to true. |
checkType('findNamespaceId', 1, link, 'string') | checkType('findNamespaceId', 1, link, 'string') | ||
checkType('findNamespaceId', 2, removeColon, 'boolean', true) | checkType('findNamespaceId', 2, removeColon, 'boolean', true) | ||
Line 57: | Line 56: | ||
local ret = {} | local ret = {} | ||
for i, page in ipairs(pages) do | for i, page in ipairs(pages) do | ||
− | ret[i] = p._formatLink | + | ret[i] = p._formatLink(page) |
end | end | ||
return ret | return ret | ||
Line 71: | Line 70: | ||
local link = t[1] | local link = t[1] | ||
local display = t[2] | local display = t[2] | ||
− | links[i] = p._formatLink | + | links[i] = p._formatLink(link, display) |
end | end | ||
return links | return links | ||
end | end | ||
− | function p.makeWikitextError(msg, helpLink, addTrackingCategory | + | function p.makeWikitextError(msg, helpLink, addTrackingCategory) |
-- Formats an error message to be returned to wikitext. If | -- Formats an error message to be returned to wikitext. If | ||
-- addTrackingCategory is not false after being returned from | -- addTrackingCategory is not false after being returned from | ||
Line 84: | Line 83: | ||
checkType('makeWikitextError', 2, helpLink, 'string', true) | checkType('makeWikitextError', 2, helpLink, 'string', true) | ||
yesno = require('Module:Yesno') | yesno = require('Module:Yesno') | ||
− | title = | + | local title = mw.title.getCurrentTitle() |
-- Make the help link text. | -- Make the help link text. | ||
local helpText | local helpText | ||
Line 94: | Line 93: | ||
-- Make the category text. | -- Make the category text. | ||
local category | local category | ||
− | if not title.isTalkPage | + | if not title.isTalkPage and yesno(addTrackingCategory) ~= false then |
− | |||
− | |||
− | |||
category = 'Hatnote templates with errors' | category = 'Hatnote templates with errors' | ||
category = string.format( | category = string.format( | ||
Line 113: | Line 109: | ||
category | category | ||
) | ) | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
end | end | ||
Line 130: | Line 117: | ||
-- with colons if necessary, and links to sections are detected and displayed | -- with colons if necessary, and links to sections are detected and displayed | ||
-- with " § " as a separator rather than the standard MediaWiki "#". Used in | -- with " § " as a separator rather than the standard MediaWiki "#". Used in | ||
− | -- the {{format link}} template. | + | -- the {{format hatnote link}} template. |
-------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ||
function p.formatLink(frame) | function p.formatLink(frame) | ||
− | |||
− | |||
local args = getArgs(frame) | local args = getArgs(frame) | ||
local link = args[1] | local link = args[1] | ||
+ | local display = args[2] | ||
if not link then | if not link then | ||
return p.makeWikitextError( | return p.makeWikitextError( | ||
'no link specified', | 'no link specified', | ||
− | 'Template:Format link#Errors', | + | 'Template:Format hatnote link#Errors', |
args.category | args.category | ||
) | ) | ||
end | end | ||
− | return p._formatLink | + | return p._formatLink(link, display) |
− | |||
− | |||
− | |||
− | |||
− | |||
end | end | ||
− | + | 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') | |
− | local | + | checkType('_formatLink', 2, display, 'string', true) |
− | + | link = removeInitialColon(link) | |
− | if | + | local namespace = p.findNamespaceId(link, false) |
− | + | local colon | |
+ | if namespace == 6 or namespace == 14 then | ||
+ | colon = ':' | ||
else | else | ||
− | + | colon = '' | |
end | 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 | ||
-- word. | -- word. | ||
− | local prePipe, | + | if not display then |
− | + | local prePipe, postPipe = link:match('^(.-)|(.*)$') | |
− | + | link = prePipe or link | |
− | + | display = postPipe | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
end | end | ||
− | -- Find the | + | -- Find the display value. |
− | local section | + | if not display then |
− | + | local page, section = link:match('^(.-)#(.*)$') | |
− | + | if page then | |
+ | display = page .. ' § ' .. section | ||
+ | end | ||
end | end | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | -- Assemble the link. | |
− | -- | + | if display then |
− | + | return string.format('[[%s%s|%s]]', colon, link, display) | |
− | + | else | |
− | + | return string.format('[[%s%s]]', colon, link) | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | if | ||
− | return string.format('[[ | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
end | end | ||
− | |||
− | |||
end | end | ||
Line 282: | Line 198: | ||
checkType('_hatnote', 1, s, 'string') | checkType('_hatnote', 1, s, 'string') | ||
checkType('_hatnote', 2, options, 'table', true) | checkType('_hatnote', 2, options, 'table', true) | ||
− | + | local classes = {'hatnote'} | |
− | local classes = {'hatnote | ||
local extraclasses = options.extraclasses | local extraclasses = options.extraclasses | ||
local selfref = options.selfref | local selfref = options.selfref | ||
Line 293: | Line 208: | ||
end | end | ||
return string.format( | return string.format( | ||
− | '<div | + | '<div class="%s">%s</div>', |
table.concat(classes, ' '), | table.concat(classes, ' '), | ||
s | s |