Editing Module:TNT
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 36: | Line 36: | ||
local p = {} | local p = {} | ||
local i18nDataset = 'I18n/Module:TNT.tab' | local i18nDataset = 'I18n/Module:TNT.tab' | ||
local checkType = require('libraryUtil').checkType | |||
-- Forward declaration of the local functions | -- Forward declaration of the local functions | ||
local | local formatMessage, loadData, link | ||
function p.msg(frame) | function p.msg(frame) | ||
Line 50: | Line 51: | ||
id = mw.text.trim(v) | id = mw.text.trim(v) | ||
elseif type(k) == 'number' then | elseif type(k) == 'number' then | ||
params | table.insert(params, mw.text.trim(v)) | ||
elseif k == 'lang' and v ~= '_' then | elseif k == 'lang' and v ~= '_' then | ||
lang = mw.text.trim(v) | lang = mw.text.trim(v) | ||
Line 59: | Line 60: | ||
-- Identical to p.msg() above, but used from other lua modules | -- Identical to p.msg() above, but used from other lua modules | ||
function p.format(dataset, key, params, lang) | |||
function p.format(dataset, key, | |||
checkType('format', 1, dataset, 'string') | checkType('format', 1, dataset, 'string') | ||
checkType('format', 2, key, 'string') | checkType('format', 2, key, 'string') | ||
return formatMessage(dataset, key, | checkType('format', 3, params, 'table', true) | ||
checkType('format', 4, lang, 'string', true) | |||
return formatMessage(dataset, key, params, lang) | |||
end | end | ||
-- Converts first parameter to a interwiki-ready link. For example, it converts | |||
-- | -- "Sandbox/Sample.tab" -> 'commons:Data:Sandbox/Sample.tab' | ||
- | |||
-- "Sandbox/Sample.tab" -> ' | |||
function p.link(frame) | function p.link(frame) | ||
return link(frame.args[1]) | return link(frame.args[1]) | ||
Line 87: | Line 75: | ||
function p.doc(frame) | function p.doc(frame) | ||
return frame:extensionTag( | |||
'templatedata', | |||
p.getTemplateData(mw.text.trim(frame.args[1])) | |||
) .. formatMessage(i18nDataset, 'edit_doc', {link(dataset)}) | |||
end | end | ||
function p.getTemplateData(dataset) | function p.getTemplateData(page) | ||
dataset = 'Templatedata/' .. mw.text.trim(page) | |||
-- 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) | ||
local names = {} | local names = {} | ||
for _, field in | for _, field in pairs(data.schema.fields) do | ||
table.insert(names, field.name) | table.insert(names, field.name) | ||
end | end | ||
Line 102: | Line 92: | ||
local params = {} | local params = {} | ||
local paramOrder = {} | local paramOrder = {} | ||
for _, row in | for _, row in pairs(data.data) do | ||
local newVal = {} | local newVal = {} | ||
local name = nil | local name = nil | ||
for pos, | for pos, val in pairs(row) do | ||
local columnName = names[pos] | |||
if columnName == 'name' then | if columnName == 'name' then | ||
name = | name = val | ||
else | else | ||
newVal[columnName] = | newVal[columnName] = val | ||
end | end | ||
end | end | ||
Line 133: | Line 124: | ||
-- Local functions | -- Local functions | ||
loadData = function(dataset, lang) | loadData = function(dataset, lang) | ||
if not dataset or dataset == '' then | |||
if not dataset then | |||
error(formatMessage(i18nDataset, 'error_no_dataset', {})) | error(formatMessage(i18nDataset, 'error_no_dataset', {})) | ||
end | end | ||
if string.sub(dataset,-4) ~= '.tab' then | |||
dataset = dataset .. '.tab' | |||
if | |||
end | end | ||
Line 176: | Line 148: | ||
-- Given a dataset name, convert it to a title with the 'commons:data:' prefix | -- Given a dataset name, convert it to a title with the 'commons:data:' prefix | ||
link = function(dataset) | link = function(dataset) | ||
dataset = 'Data:' .. mw.text.trim(dataset or '') | |||
if mw.site.siteName == 'Wikimedia Commons' then | |||
return dataset | |||
else | |||
return 'commons:' .. dataset | |||
end | |||
end | end | ||