13,401
edits
No edit summary Tag: Reverted |
(update) Tag: Manual revert |
||
Line 146: | Line 146: | ||
else | else | ||
return dataset | return dataset | ||
end | |||
end | |||
loadData = function(dataset, lang) | |||
dataset = sanitizeDataset(dataset) | |||
if not dataset then | |||
error(formatMessage(i18nDataset, 'error_no_dataset', {})) | |||
end | |||
-- 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 | |||
error('Missing JsonConfig extension; Cannot load https://commons.wikimedia.org/wiki/Data:' .. dataset) | |||
end | |||
local data = mw.ext.data.get(dataset, lang) | |||
if data == false then | |||
if dataset == i18nDataset then | |||
-- Prevent cyclical calls | |||
error('Missing Commons dataset ' .. i18nDataset) | |||
else | |||
error(formatMessage(i18nDataset, 'error_bad_dataset', {link(dataset)})) | |||
end | |||
end | |||
return data | |||
end | |||
-- Given a dataset name, convert it to a title with the 'commons:data:' prefix | |||
link = function(dataset) | |||
return 'c:Data:' .. mw.text.trim(dataset or '') | |||
end | |||
formatMessage = function(dataset, key, params, lang) | |||
for _, row in pairs(loadData(dataset, lang).data) do | |||
local id, msg = unpack(row) | |||
if id == key then | |||
local result = mw.message.newRawMessage(msg, unpack(params or {})) | |||
return result:plain() | |||
end | |||
end | |||
if dataset == i18nDataset then | |||
-- Prevent cyclical calls | |||
error('Invalid message key "' .. key .. '"') | |||
else | |||
error(formatMessage(i18nDataset, 'error_bad_msgkey', {key, link(dataset)})) | |||
end | end | ||
end | end | ||
return p | return p |
edits