Module:Hatnote: Difference between revisions
Content added Content deleted
m (1 revision imported) |
(Non-breaking space after "§" in _formatLink() to match Module:Section link; might not be a bad idea to require() that module but this is a good start) |
||
Line 34: | 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 false. |
||
checkType('findNamespaceId', 1, link, 'string') |
checkType('findNamespaceId', 1, link, 'string') |
||
checkType('findNamespaceId', 2, removeColon, 'boolean', true) |
checkType('findNamespaceId', 2, removeColon, 'boolean', true) |
||
Line 75: | Line 75: | ||
end |
end |
||
function p.makeWikitextError(msg, helpLink, addTrackingCategory) |
function p.makeWikitextError(msg, helpLink, addTrackingCategory, title) |
||
-- 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 83: | Line 83: | ||
checkType('makeWikitextError', 2, helpLink, 'string', true) |
checkType('makeWikitextError', 2, helpLink, 'string', true) |
||
yesno = require('Module:Yesno') |
yesno = require('Module:Yesno') |
||
title = title or mw.title.getCurrentTitle() |
|||
-- Make the help link text. |
-- Make the help link text. |
||
local helpText |
local helpText |
||
Line 109: | Line 109: | ||
category |
category |
||
) |
) |
||
⚫ | |||
function p.disambiguate(page, disambiguator) |
|||
-- Formats a page title with a disambiguation parenthetical, |
|||
-- i.e. "Example" → "Example (disambiguation)". |
|||
checkType('disambiguate', 1, page, 'string') |
|||
checkType('disambiguate', 2, disambiguator, 'string', true) |
|||
disambiguator = disambiguator or 'disambiguation' |
|||
return string.format('%s (%s)', page, disambiguator) |
|||
end |
end |
||
Line 135: | Line 144: | ||
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 |
|||
if namespace == 6 or namespace == 14 then |
|||
colon = ':' |
|||
else |
|||
colon = '' |
|||
⚫ | |||
-- 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 161: | Line 162: | ||
local page, section = link:match('^(.-)#(.*)$') |
local page, section = link:match('^(.-)#(.*)$') |
||
if page then |
if page then |
||
display = page .. ' § |
display = page .. ' § ' .. section |
||
end |
end |
||
end |
end |
||
Line 167: | Line 168: | ||
-- Assemble the link. |
-- Assemble the link. |
||
if display then |
if display then |
||
return string.format( |
return string.format( |
||
'[[:%s|%s]]', |
|||
string.gsub(link, '|(.*)$', ''), --display overwrites manual piping |
|||
display |
|||
) |
|||
else |
else |
||
return string.format('[[ |
return string.format('[[:%s]]', link) |
||
end |
end |
||
end |
end |
||
Line 198: | Line 203: | ||
checkType('_hatnote', 1, s, 'string') |
checkType('_hatnote', 1, s, 'string') |
||
checkType('_hatnote', 2, options, 'table', true) |
checkType('_hatnote', 2, options, 'table', true) |
||
options = options or {} |
|||
local classes = {'hatnote'} |
local classes = {'hatnote'} |
||
local extraclasses = options.extraclasses |
local extraclasses = options.extraclasses |
||
Line 208: | Line 214: | ||
end |
end |
||
return string.format( |
return string.format( |
||
'<div class="%s">%s</div>', |
'<div role="note" class="%s">%s</div>', |
||
table.concat(classes, ' '), |
table.concat(classes, ' '), |
||
s |
s |