Documentation for this module may be created at Module:DataMaps schema table/doc
local p = {}
local SCHEMA_VERSION = '17.4'
local function table_concat_escaped(table, sep)
-- Default separator is empty string
sep = sep or ''
local result = ''
for i, v in ipairs(table) do
-- Convert element to string using tostring
local str_v = tostring(v)
result = result .. (i > 1 and sep or '') .. str_v
end
return result
end
--- Returns the table of the current schema
---
--- @return table Table of schema
local function getSchema()
local schema = mw.loadJsonData(string.format('Module:DataMaps schema table/v%s.json', SCHEMA_VERSION))
return schema
end
local function createTableHeader()
local headers = {
'Key',
'Name',
'Description',
'Type',
'Default',
'Enums'
}
local trow = mw.html.create('tr')
for _, header in ipairs(headers) do
trow:tag('th'):wikitext(header):done()
end
return trow
end
local function createPropRow(prop, propKey)
local trow = mw.html.create('tr')
local keys = {
'title',
'description',
'type',
'default',
'enum'
}
trow:tag('td')
:tag('code')
:wikitext(propKey)
:done()
:done()
for _, key in pairs(keys) do
local text = ''
if type(prop[key]) == 'table' then
mw.logObject(prop[key])
text = table_concat_escaped(prop[key], ',')
else
text = prop[key]
end
text = tostring(text)
if text ~= 'nil' then
text = mw.text.trim(text)
mw.log(text)
end
trow:tag('td')
:wikitext(text)
:done()
end
return trow
end
function p.outputWikitext()
local defs = getSchema()['$defs']
--mw.logObject(defs)
local html = mw.html.create()
for _, def in pairs(defs) do
local defHeader = mw.html.create('h3')
defHeader:wikitext(def['title'])
html:node(defHeader)
local table = mw.html.create('table')
table:addClass('wikitable')
local thead = createTableHeader()
table:node(thead)
for key, prop in pairs(def['properties']) do
local propRow = createPropRow(prop, key)
table:node(propRow)
end
html:node(table)
end
return tostring(html)
end
return p