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 true.
-- 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')
local title = mw.title.getCurrentTitle()
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
)
)
end

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 = ''
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 161: Line 162:
local page, section = link:match('^(.-)#(.*)$')
local page, section = link:match('^(.-)#(.*)$')
if page then
if page then
display = page .. ' § ' .. section
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('[[%s%s|%s]]', colon, link, display)
return string.format(
'[[:%s|%s]]',
string.gsub(link, '|(.*)$', ''), --display overwrites manual piping
display
)
else
else
return string.format('[[%s%s]]', colon, link)
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