Module:Shortcut: Difference between revisions

From the Croc Wiki, the Croc encyclopedia
Jump to navigationJump to search
Content added Content deleted
(output an error message if there is nothing to display)
(move messages to the config module and make categories optional)
Line 5: Line 5:


-- Load required modules
-- Load required modules
local yesno = require('Module:Yesno')
local checkType = require('libraryUtil').checkType
local checkType = require('libraryUtil').checkType
local yesno = require('Module:Yesno')


local p = {}
local p = {}

local function message(msg, ...)
return mw.message.newRawMessage(msg, ...):plain()
end

local function makeCategoryLink(cat)
return string.format('[[%s:%s]]', mw.site.namespaces[14].name, cat)
end


function p._main(shortcuts, options, frame, cfg)
function p._main(shortcuts, options, frame, cfg)
Line 16: Line 24:
frame = frame or mw.getCurrentFrame()
frame = frame or mw.getCurrentFrame()
cfg = cfg or mw.loadData(CONFIG_MODULE)
cfg = cfg or mw.loadData(CONFIG_MODULE)
local isCategorized = yesno(options.category) ~= false


-- Validate shortcuts
-- Validate shortcuts
for i, shortcut in ipairs(shortcuts) do
for i, shortcut in ipairs(shortcuts) do
if type(shortcut) ~= 'string' or #shortcut < 1 then
if type(shortcut) ~= 'string' or #shortcut < 1 then
error(message(cfg['invalid-shortcut-error'], i), 2)
error(string.format(
'shortcut #%d was invalid (shortcuts must be strings of ' ..
'at least one character in length)'
), 2)
end
end
end
end
Line 37: Line 43:
-- Return an error if we have nothing to display
-- Return an error if we have nothing to display
if #listItems < 1 then
if #listItems < 1 then
local msg = cfg['no-content-error']
return '<strong class="error">Error: no shortcuts were specified ' ..
msg = string.format('<strong class="error">%s</strong>', msg)
'and the ' .. mw.text.nowiki('|msg=') .. ' parameter was not ' ..
if isCategorized and cfg['no-content-error-category'] then
'set.</strong>'
msg = msg .. makeCategoryLink(cfg['no-content-error-category'])
end
return msg
end
end


Line 61: Line 70:
local nShortcuts = #shortcuts
local nShortcuts = #shortcuts
if nShortcuts > 0 then
if nShortcuts > 0 then
shortcutHeading = mw.message.newRawMessage(
shortcutHeading = message(cfg['shortcut-heading'], nShortcuts)
cfg['shortcut-heading'],
nShortcuts
):plain()
shortcutHeading = frame:preprocess(shortcutHeading)
shortcutHeading = frame:preprocess(shortcutHeading)
shortcutHeading = shortcutHeading .. '\n'
shortcutHeading = shortcutHeading .. '\n'
Line 92: Line 98:
end
end


-- Error category
-- Output an error category if the first shortcut doesn't exist
if isCategorized
if shortcuts[1] and not yesno(options.nocat) then
and shortcuts[1]
and cfg['first-parameter-error-category']
then
local title = mw.title.new(shortcuts[1])
local title = mw.title.new(shortcuts[1])
if not title or not title.exists then
if not title or not title.exists then
root:wikitext(string.format(
root:wikitext(makeCategoryLink(cfg['first-parameter-error-category']))
'[[%s:%s]]',
mw.site.namespaces[14].name,
cfg['first-parameter-error-category']
))
end
end
end
end