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 | ||
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 96: | Line 84: | ||
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 90: | ||
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 152: | Line 141: | ||
if not dataset then | if not dataset then | ||
error(formatMessage(i18nDataset, 'error_no_dataset', {})) | error(formatMessage(i18nDataset, 'error_no_dataset', {})) | ||
end | end | ||
Line 176: | Line 158: | ||
-- 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 | ||