Module:Hatnote: Difference between revisions

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
m>Mr. Stradivarius
(add type check for makeWikitextError)
m>Mr. Stradivarius
(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._findNamespaceId(link, removeColon)
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('_findNamespaceId', 1, link, 'string')
checkType('findNamespaceId', 1, link, 'string')
checkType('_findNamespaceId', 2, removeColon, 'boolean', true)
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._formatPages(...)
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._formatLink(page)
ret[i] = p.formatLink(page)
end
end
return ret
return ret
end
end


function p._formatPageTables(...)
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('_formatPageTables', i, t, 'table')
checkType('formatPageTables', i, t, 'table')
local link = t[1]
local link = t[1]
local display = t[2]
local display = t[2]
links[i] = p._formatLink(link, display)
links[i] = p.formatLink(link, display)
end
end
return links
return links
end
end


function p._makeWikitextError(msg, demo)
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('_makeWikitextError', 1, msg, 'string')
checkType('makeWikitextError', 1, msg, 'string')
checkType('_makeWikitextError', 2, demo, 'boolean', true)
yesno = require('Module:Yesno')
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._makeWikitextError('no link specified')
return p.makeWikitextError('no link specified')
end
end
return p._formatLink(link, display)
return p.formatLink(link, display)
end
end


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
-- 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('_formatLink', 1, link, 'string')
checkType('formatLink', 1, link, 'string')
checkType('_formatLink', 2, display, 'string', true)
checkType('formatLink', 2, display, 'string', true)
link = removeInitialColon(link)
link = removeInitialColon(link)
local namespace = p._findNamespaceId(link, false)
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._makeWikitextError('no text specified')
return p.makeWikitextError('no text specified')
end
end
options.extraclasses = args.extraclasses
options.extraclasses = args.extraclasses
Anonymous user