Module:TNT and Module:TNT/sandbox: Difference between pages
(Difference between pages)
Jump to navigation
Jump to search
m (1 revision imported) |
m (1 revision imported: forgot this existed...) |
||
Line 42: | Line 42: | ||
function p.msg(frame) | function p.msg(frame) | ||
local dataset, id | local dataset, id | ||
local params = {} | local params = { n = 0 } | ||
local lang = nil | local lang = nil | ||
for k, v in pairs(frame.args) do | for k, v in pairs(frame.args) do | ||
Line 50: | Line 50: | ||
id = mw.text.trim(v) | id = mw.text.trim(v) | ||
elseif type(k) == 'number' then | elseif type(k) == 'number' then | ||
local i = k - 2 | |||
params[i] = mw.text.trim(v) | |||
params.n = math.max(params.n, i) | |||
elseif k == 'lang' and v ~= '_' then | elseif k == 'lang' and v ~= '_' then | ||
lang = mw.text.trim(v) | lang = mw.text.trim(v) | ||
Line 65: | Line 67: | ||
checkType('format', 1, dataset, 'string') | checkType('format', 1, dataset, 'string') | ||
checkType('format', 2, key, 'string') | checkType('format', 2, key, 'string') | ||
return formatMessage(dataset, key, {...}) | return formatMessage(dataset, key, {n = select('#', ...), ...}) | ||
end | end | ||
Line 77: | Line 79: | ||
checkType('formatInLanguage', 2, dataset, 'string') | checkType('formatInLanguage', 2, dataset, 'string') | ||
checkType('formatInLanguage', 3, key, 'string') | checkType('formatInLanguage', 3, key, 'string') | ||
return formatMessage(dataset, key, {...}, lang) | return formatMessage(dataset, key, {n = select('#', ...), ...}, lang) | ||
end | end | ||
Line 88: | Line 90: | ||
function p.doc(frame) | function p.doc(frame) | ||
local dataset = 'Templatedata/' .. sanitizeDataset(frame.args[1]) | local dataset = 'Templatedata/' .. sanitizeDataset(frame.args[1]) | ||
return frame:extensionTag('templatedata', p.getTemplateData(dataset)) .. | return frame:extensionTag('templatedata', p.getTemplateData(dataset, frame.args)) .. | ||
formatMessage(i18nDataset, 'edit_doc', {link(dataset)}) | formatMessage(i18nDataset, 'edit_doc', {link(dataset)}) | ||
end | end | ||
function p.getTemplateData(dataset) | function p.getTemplateData(dataset, args) | ||
-- TODO: add '_' parameter once lua starts reindexing properly for "all" languages | -- TODO: add '_' parameter once lua starts reindexing properly for "all" languages | ||
local data = loadData(dataset) | local data = loadData(dataset) | ||
Line 137: | Line 139: | ||
paramOrder=paramOrder, | paramOrder=paramOrder, | ||
description=data.description, | description=data.description, | ||
-- TODO: Store this in a dataset: | |||
format=(args and args.format or nil), | |||
}) | }) | ||
Line 170: | Line 174: | ||
-- Give helpful error to thirdparties who try and copy this module. | -- Give helpful error to thirdparties who try and copy this module. | ||
if not mw.ext or not mw.ext.data or not mw.ext.data.get then | if not mw.ext or not mw.ext.data or not mw.ext.data.get then | ||
error( | error('Missing JsonConfig extension; Cannot load https://commons.wikimedia.org/wiki/Data:' .. dataset) | ||
Cannot load https://commons.wikimedia.org/wiki/Data: | |||
end | end | ||
Line 197: | Line 199: | ||
local id, msg = unpack(row) | local id, msg = unpack(row) | ||
if id == key then | if id == key then | ||
local result = mw.message.newRawMessage(msg, unpack(params or {})) | local result = mw.message.newRawMessage(msg, unpack(params or {}, 1, params and params.n or nil)) | ||
return result:plain() | return result:plain() | ||
end | end |