Module:Hatnote: Difference between revisions
Jump to navigation
Jump to search
Content added Content deleted
(add type check for makeWikitextError) |
(make makeWikitextError use Module:Yesno to parse the demo parameter, and remove underscores from all the function names, as that's normally done for private functions, whereas these are public) |
||
Line 10: | Line 10: | ||
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 p = {} |
local p = {} |
||
Line 29: | Line 30: | ||
end |
end |
||
function p. |
function p.findNamespaceId(link, removeColon) |
||
-- Finds the namespace id (namespace number) of a link or a pagename. This |
-- 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 |
-- 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 true. |
||
checkType(' |
checkType('findNamespaceId', 1, link, 'string') |
||
checkType(' |
checkType('findNamespaceId', 2, removeColon, 'boolean', true) |
||
if removeColon ~= false then |
if removeColon ~= false then |
||
link = removeInitialColon(link) |
link = removeInitialColon(link) |
||
Line 49: | Line 50: | ||
end |
end |
||
function p. |
function p.formatPages(...) |
||
-- Formats a list of pages using formatLink and returns it as an array. Nil |
-- Formats a list of pages using formatLink and returns it as an array. Nil |
||
-- values are not allowed. |
-- values are not allowed. |
||
Line 55: | Line 56: | ||
local ret = {} |
local ret = {} |
||
for i, page in ipairs(pages) do |
for i, page in ipairs(pages) do |
||
ret[i] = p. |
ret[i] = p.formatLink(page) |
||
end |
end |
||
return ret |
return ret |
||
end |
end |
||
function p. |
function p.formatPageTables(...) |
||
-- Takes a list of page/display tables and returns it as a list of |
-- Takes a list of page/display tables and returns it as a list of |
||
-- formatted links. Nil values are not allowed. |
-- formatted links. Nil values are not allowed. |
||
Line 66: | Line 67: | ||
local links = {} |
local links = {} |
||
for i, t in ipairs(pages) do |
for i, t in ipairs(pages) do |
||
checkType(' |
checkType('formatPageTables', i, t, 'table') |
||
local link = t[1] |
local link = t[1] |
||
local display = t[2] |
local display = t[2] |
||
links[i] = p. |
links[i] = p.formatLink(link, display) |
||
end |
end |
||
return links |
return links |
||
end |
end |
||
function p. |
function p.makeWikitextError(msg, demo) |
||
-- Formats an error message to be returned to wikitext. If demo is not nil |
-- Formats an error message to be returned to wikitext. If demo is not nil |
||
-- or false, no error category is added. |
-- or false, no error category is added. |
||
checkType(' |
checkType('makeWikitextError', 1, msg, 'string') |
||
yesno = require('Module:Yesno') |
|||
checkType('_makeWikitextError', 2, demo, 'boolean', true) |
|||
local errorCategory = 'Hatnote templates with errors' |
local errorCategory = 'Hatnote templates with errors' |
||
local errorCategoryLink |
local errorCategoryLink |
||
if demo then |
if yesno(demo) then |
||
errorCategoryLink = string.format( |
errorCategoryLink = string.format( |
||
'[[%s:%s]]', |
'[[%s:%s]]', |
||
Line 110: | Line 111: | ||
local display = args[2] |
local display = args[2] |
||
if not link then |
if not link then |
||
return p. |
return p.makeWikitextError('no link specified') |
||
end |
end |
||
return p. |
return p.formatLink(link, display) |
||
end |
end |
||
function p. |
function p.formatLink(link, display) |
||
-- Find whether we need to use the colon trick or not. We need to use the |
-- 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 |
-- 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. |
||
checkType(' |
checkType('formatLink', 1, link, 'string') |
||
checkType(' |
checkType('formatLink', 2, display, 'string', true) |
||
link = removeInitialColon(link) |
link = removeInitialColon(link) |
||
local namespace = p. |
local namespace = p.findNamespaceId(link, false) |
||
local colon |
local colon |
||
if namespace == 6 or namespace == 14 then |
if namespace == 6 or namespace == 14 then |
||
Line 157: | Line 158: | ||
local options = {} |
local options = {} |
||
if not s then |
if not s then |
||
return p. |
return p.makeWikitextError('no text specified') |
||
end |
end |
||
options.extraclasses = args.extraclasses |
options.extraclasses = args.extraclasses |