Module:TNT: Difference between revisions
From Test Wiki
Content deleted Content added
MacFan4000 (talk | contribs) No edit summary Tags: Manual revert Reverted |
m 1 revision imported |
||
| (3 intermediate revisions by 2 users not shown) | |||
| Line 86: | Line 86: | ||
end |
end |
||
local implGetTemplateData; |
|||
function p.doc(frame) |
function p.doc(frame) |
||
local dataset = |
local dataset = sanitizeDataset(frame.args[1]) |
||
local json, dataPage, categories = implGetTemplateData(dataset) |
|||
return frame:extensionTag('templatedata', |
return frame:extensionTag('templatedata', json) .. |
||
formatMessage(i18nDataset, 'edit_doc', {link(dataPage)}) .. |
|||
(categories or ""); |
|||
end |
end |
||
function p.getTemplateData(dataset) |
function p.getTemplateData(dataset) |
||
local data = implGetTemplateData(dataset, true); |
|||
return data; |
|||
end |
|||
function implGetTemplateData(dataset, legacy) |
|||
-- 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( |
local data, dataPage, categories = loadData( |
||
dataset, nil, not legacy and 'TemplateData' or nil); |
|||
local names = {} |
local names = {} |
||
for _, field in ipairs(data.schema.fields) do |
for _, field in ipairs(data.schema.fields) do |
||
| Line 100: | Line 109: | ||
end |
end |
||
local numOnly = true |
|||
local params = {} |
local params = {} |
||
local paramOrder = {} |
local paramOrder = {} |
||
| Line 113: | Line 123: | ||
end |
end |
||
if name then |
if name then |
||
if ( |
|||
(type(name) ~= "number") |
|||
and ( |
|||
(type(name) ~= "string") |
|||
or not string.match(name, "^%d+$") |
|||
) |
|||
) then |
|||
numOnly = false |
|||
end |
|||
params[name] = newVal |
params[name] = newVal |
||
table.insert(paramOrder, name) |
table.insert(paramOrder, name) |
||
| Line 119: | Line 138: | ||
-- Work around json encoding treating {"1":{...}} as an [{...}] |
-- Work around json encoding treating {"1":{...}} as an [{...}] |
||
if numOnly then |
|||
params['zzz123']='' |
|||
end |
|||
local json = mw.text.jsonEncode({ |
local json = mw.text.jsonEncode({ |
||
params=params, |
params=params, |
||
paramOrder=paramOrder, |
paramOrder=paramOrder, |
||
description=data.description |
description=data.description, |
||
}) |
}) |
||
if numOnly then |
|||
json = string.gsub(json,'"zzz123":"",?', "") |
|||
end |
|||
return json |
return json, dataPage, categories; |
||
end |
end |
||
| Line 148: | Line 171: | ||
end |
end |
||
loadData = function(dataset, lang) |
loadData = function(dataset, lang, dataType) |
||
dataset = sanitizeDataset(dataset) |
dataset = sanitizeDataset(dataset) |
||
if not dataset then |
if not dataset then |
||
| Line 156: | Line 179: | ||
-- 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('Missing JsonConfig extension |
error(string.format([['''Missing JsonConfig extension, or not properly configured; |
||
Cannot load https://commons.wikimedia.org/wiki/Data:%s. |
|||
See https://www.mediawiki.org/wiki/Extension:JsonConfig#Supporting_Wikimedia_templates''']], dataset)) |
|||
end |
end |
||
local |
local dataPage = dataset; |
||
local data, categories; |
|||
if dataType == 'TemplateData' then |
|||
dataPage = 'TemplateData/' .. dataset; |
|||
data = mw.ext.data.get(dataPage, lang); |
|||
if data == false then |
|||
data = mw.ext.data.get('Templatedata/' .. dataset, lang); |
|||
if data ~= false then |
|||
categories = '[[Category:Templates using legacy global TemplateData table name]]'; |
|||
dataPage = 'Templatedata/' .. dataset; |
|||
end |
|||
end |
|||
else |
|||
data = mw.ext.data.get(dataset, lang) |
|||
end |
|||
if data == false then |
if data == false then |
||
| Line 169: | Line 208: | ||
end |
end |
||
end |
end |
||
return data |
return data, dataPage, categories |
||
end |
end |
||