Module:Documentation: Difference between revisions

Jump to navigation Jump to search
m>Mr. Stradivarius
make the formatMessage error message more informative, at the risk of including long cfg messages in the error message
m>Mr. Stradivarius
use the cfg key only with formatMessage in order to generate more descriptive error messages
Line 24: Line 24:
----------------------------------------------------------------------------
----------------------------------------------------------------------------


local function formatMessage(msg, valArray)
local function formatMessage(cfgKey, valArray)
--[[
--[[
-- Formats a message, usually from the cfg table.
-- Formats a message from the cfg table.
-- Values from valArray can be specified in the message by using $1 for [1], $2 for [2], etc.
-- Values from valArray can be specified in the message by using $1 for [1], $2 for [2], etc.
-- So formatMessage('Foo $2 bar $1.', {'baz', 'qux'}) will return "Foo qux bar baz."
-- For example, if the message cfg.fooMessage had the value 'Foo $2 bar $1.',
-- formatMessage('fooMessage', {'baz', 'qux'}) would return "Foo qux bar baz."
--]]
--]]
checkType('formatMessage', 1, msg, 'string')
checkType('formatMessage', 1, cfgKey, 'string')
checkType('formatMessage', 2, valArray, 'table')
checkType('formatMessage', 2, valArray, 'table')
local msg = cfg[cfgKey] or error('formatMessage: no message found for cfg key "' .. cfgKey .. '"', 2)


local function getMessageVal(match)
local function getMessageVal(match)
match = tonumber(match)
match = tonumber(match)
return valArray[match] or error('formatMessage: No value found for key $' .. match .. '. Message was "' .. msg .. '"', 4)
return valArray[match] or error('formatMessage: no value found for key $' .. match .. ' in message cfg.' .. cfgKey, 2)
end
end


Line 330: Line 332:
local editLink = makeUrlLink(docTitle:fullUrl{action = 'edit'}, cfg.editLinkDisplay)
local editLink = makeUrlLink(docTitle:fullUrl{action = 'edit'}, cfg.editLinkDisplay)
local historyLink = makeUrlLink(docTitle:fullUrl{action = 'history'}, cfg.historyLinkDisplay)
local historyLink = makeUrlLink(docTitle:fullUrl{action = 'history'}, cfg.historyLinkDisplay)
text = text .. formatMessage(cfg.transcludedFromBlurb, {docLink}) .. ' ' .. makeToolbar(editLink, historyLink) .. '<br />'
text = text .. formatMessage('transcludedFromBlurb', {docLink}) .. ' ' .. makeToolbar(editLink, historyLink) .. '<br />'
elseif subjectSpace == 828 then
elseif subjectSpace == 828 then
-- /doc does not exist; ask to create it.
-- /doc does not exist; ask to create it.
local createLink = makeUrlLink(docTitle:fullUrl{action = 'edit', preload = cfg.modulePreload}, cfg.createLinkDisplay)
local createLink = makeUrlLink(docTitle:fullUrl{action = 'edit', preload = cfg.modulePreload}, cfg.createLinkDisplay)
text = text .. formatMessage(cfg.createModuleDocBlurb, {createLink}) .. '<br />'
text = text .. formatMessage('createModuleDocBlurb', {createLink}) .. '<br />'
end
end
-- Add links to /sandbox and /testcases when appropriate.
-- Add links to /sandbox and /testcases when appropriate.
Line 350: Line 352:
local sandboxPreload = subjectSpace == 828 and cfg.moduleSandboxPreload or cfg.templateSandboxPreload
local sandboxPreload = subjectSpace == 828 and cfg.moduleSandboxPreload or cfg.templateSandboxPreload
local sandboxCreateLink = makeUrlLink(sandboxTitle:fullUrl{action = 'edit', preload = sandboxPreload}, cfg.sandboxCreateLinkDisplay)
local sandboxCreateLink = makeUrlLink(sandboxTitle:fullUrl{action = 'edit', preload = sandboxPreload}, cfg.sandboxCreateLinkDisplay)
local mirrorSummary = formatMessage(cfg.mirrorEditSummary, {makeWikilink(templatePage)})
local mirrorSummary = formatMessage('mirrorEditSummary', {makeWikilink(templatePage)})
local mirrorLink = makeUrlLink(sandboxTitle:fullUrl{action = 'edit', preload = templatePage, summary = mirrorSummary}, cfg.mirrorLinkDisplay)
local mirrorLink = makeUrlLink(sandboxTitle:fullUrl{action = 'edit', preload = templatePage, summary = mirrorSummary}, cfg.mirrorLinkDisplay)
sandboxLinks = cfg.sandboxLinkDisplay .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink)
sandboxLinks = cfg.sandboxLinkDisplay .. ' ' .. makeToolbar(sandboxCreateLink, mirrorLink)
Line 364: Line 366:
testcasesLinks = cfg.testcasesLinkDisplay .. ' ' .. makeToolbar(testcasesCreateLink)
testcasesLinks = cfg.testcasesLinkDisplay .. ' ' .. makeToolbar(testcasesCreateLink)
end
end
text = text .. formatMessage(cfg.experimentBlurb, {pagePossessive, sandboxLinks, testcasesLinks}) .. '<br />'
text = text .. formatMessage('experimentBlurb', {pagePossessive, sandboxLinks, testcasesLinks}) .. '<br />'
-- Show the categories text, but not if "content" fed or "docname fed" since then it is unclear where to add the categories.
-- Show the categories text, but not if "content" fed or "docname fed" since then it is unclear where to add the categories.
if not content and not docnameFed then
if not content and not docnameFed then
local docPathLink = makeWikilink(docpage, cfg.docLinkDisplay)
local docPathLink = makeWikilink(docpage, cfg.docLinkDisplay)
text = text .. formatMessage(cfg.addCategoriesBlurb, {docPathLink})
text = text .. formatMessage('addCategoriesBlurb', {docPathLink})
end
end
-- Show the "subpages" link.
-- Show the "subpages" link.
Line 380: Line 382:
pagetype = cfg.defaultPagetype
pagetype = cfg.defaultPagetype
end
end
text = text .. ' ' .. makeWikilink('Special:PrefixIndex/' .. templatePage .. '/', formatMessage(cfg.subpagesLinkDisplay, {pagetype}))
text = text .. ' ' .. makeWikilink('Special:PrefixIndex/' .. templatePage .. '/', formatMessage('subpagesLinkDisplay', {pagetype}))
end
end
-- Show the "print" link if it exists.
-- Show the "print" link if it exists.
Line 387: Line 389:
if printTitle.exists then
if printTitle.exists then
local printLink = makeWikilink(printPage, cfg.printLinkDisplay)
local printLink = makeWikilink(printPage, cfg.printLinkDisplay)
text = text .. '<br />' .. formatMessage(cfg.printBlurb, {printLink})
text = text .. '<br />' .. formatMessage('printBlurb', {printLink})
.. (cfg.displayPrintCategory and makeCategoryLink(cfg.printCategory) or '')
.. (cfg.displayPrintCategory and makeCategoryLink(cfg.printCategory) or '')
end
end