Module:TNT: Difference between revisions
From the Croc Wiki, the Croc encyclopedia
Jump to navigationJump to search
Updating from mw
m (Copying 5 changes by Yurik: "fix templatedata doc having just the positional parameters, better description, more docs changes, fixed doc link, Trim parameter whitespaces" from mw:Module:TNT. See docs.) |
(Updating from mw) |
||
Line 23:
-- | source-table <!-- uses a translation message with id = "source-table" -->
-- | param1 }} <!-- optional parameter -->
--
--
-- The "doc" function will generate the <templatedata> parameter documentation for templates.
-- This way all template parameters can be stored and localized in a single Commons dataset.
Line 36:
local p = {}
local i18nDataset = 'I18n/Module:TNT.tab'
local checkType = require('libraryUtil').checkType
-- Forward declaration of the local functions
local formatMessage, loadData, link
function p.msg(frame)
Line 47 ⟶ 51:
id = mw.text.trim(v)
elseif type(k) == 'number' then
table.insert(params, mw.text.trim(v))
elseif k == 'lang' and v ~= '_' then
lang = mw.text.trim(v)
Line 53 ⟶ 57:
end
return formatMessage(dataset, id, params, lang)
end▼
-- Identical to p.msg() above, but used from other lua modules
checkType('format', 1, dataset, 'string')
checkType('format', 2, key, 'string')
checkType('format', 3, params, 'table', true)
checkType('format', 4, lang, 'string', true)
end
Line 59 ⟶ 72:
function p.link(frame)
return link(frame.args[1])
▲end
-- Given a dataset name, convert it to a title with the 'commons:data:' prefix▼
dataset = 'Data:' .. mw.text.trim(dataset or '')▼
if mw.site.siteName == 'Wikimedia Commons' then▼
return dataset▼
else▼
return 'commons:' .. dataset▼
end▼
end
function p.doc(frame)
return frame:extensionTag(
'templatedata',
p.getTemplateData(mw.text.trim(frame.args[1]))
) ..
end
function p.getTemplateData(page)
dataset = 'Templatedata/' ..
-- TODO: add '_' parameter once lua starts reindexing properly for "all" languages
local data = loadData(dataset)
Line 89 ⟶ 92:
local params = {}
local paramOrder = {}
local json = mw.text.jsonEncode({
params=params,
Line 120 ⟶ 123:
end
-- Local functions
▲function formatMessage(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))▼
return result:plain()▼
end▼
end▼
if dataset == i18nDataset then▼
-- Prevent cyclical calls▼
error('Invalid message key "' .. key .. '"')▼
else▼
error(tntMessage('error_bad_msgkey', {key, link(dataset)}))▼
end▼
end▼
▲ return formatMessage(i18nDataset, key, params)
end▼
if not dataset or dataset == '' then
error(
end
if string.sub(dataset,-4) ~= '.tab' then
dataset = dataset .. '.tab'
end
function loadData(dataset, lang)▼
local data = mw.ext.data.get(dataset, lang)
if data == false then
if dataset == i18nDataset then
Line 157 ⟶ 140:
error('Missing Commons dataset ' .. i18nDataset)
else
error(
end
end
return data
▲-- Given a dataset name, convert it to a title with the 'commons:data:' prefix
▲ dataset = 'Data:' .. mw.text.trim(dataset or '')
▲ if mw.site.siteName == 'Wikimedia Commons' then
▲ return dataset
▲ else
▲ return 'commons:' .. dataset
▲ end
▲end
formatMessage = function(dataset, key, params, lang)
▲ end
▲ if dataset == i18nDataset then
▲ -- Prevent cyclical calls
▲ error('Invalid message key "' .. key .. '"')
▲ else
▲ end
end
|