Module:TemplateBox
From Neodyland Wiki
More actions
This documentation is transcluded from Module:TemplateBox/doc.
local p = {}
local paraminfo = {
description = {
required = true,
default = '',
t = 'InterfaceText',
alias = 'desc'
},
params = {
required = true,
t = 'map',
children = {
label = {
required = false,
default = '',
t = 'InterfaceText'
},
required = {
required = true,
default = false,
extract = function()
end
},
description = {
required = false,
default = '',
t = 'InterfaceText',
alias = 'd'
},
deprecated = {
required = true,
default = false,
extract = function()
end
},
aliases = {
required = false,
default = '',
extract = function()
end
},
default = {
required = false,
default = '',
t = 'InterfaceText',
alias = 'def'
},
type = {
required = false,
default = 'unknown',
t = 'selection',
selection = 'unknown|number|string|string/wiki-user-name|string/wiki-page-name'
},
inherits = {
required = false,
default = nil,
t = 'string'
}
-- sets will be treated differently because we can only have a plain structure in wikitext
},
key = {
t = 'string',
alias = '$d',
childrenpattern = '^%d'
}
}
}
-- =p.test({ args={a="b"} })
function p.test(frame)
local args = frame.args
local JSON = require('Module:JSON')
return JSON:encode(args)
end
function tobool(st)
return st == 'true'
end
function p.templatebox(frame)
local pargs = mw.clone( ( frame:getParent() or {} ).args or {} )
local tdata = {
description = '',
params = {
},
sets = {
}
}
local hasDesc, hasParams = false, false
local JSON = require('Module:JSON')
for k, v in pairs( pargs ) do
if type( k ) == 'number' then
local param = pargs[k .. '-td'] or v
local label = pargs[k .. '-label-td'] or pargs[k .. '-label']
local set = pargs[k .. '-set-td'] or pargs[k .. '-set']
local required = tobool(pargs[k .. '-required-td'] or pargs[k .. '-required'] or (pargs[k .. 'stat'] == 'required'))
local description = pargs[k .. 'd-td'] or pargs[k .. 'd']
local deprecated = tobool(pargs[k .. '-deprecated-td'] or pargs[k .. '-deprecated'] or (pargs[k .. 'stat'] == 'deprecated'))
local aliases = mw.text.split(pargs[k .. 'aliases-td'] or pargs[k .. 'aliases'] or '', '/', true)
local default = pargs[k .. 'def-td'] or pargs[k .. 'def']
local ptype = pargs[k .. 'type-td'] or pargs[k .. 'type']
tdata.params[param] = {
label = label,
required = required,
description = description,
deprecated = deprecated,
aliases = aliases,
default = default,
type = ptype
}
if set then
local found = false
for i, s in ipairs( tdata.sets ) do
if s.label == set then
table.insert(s.params, param)
found = true
end
end
if not found then
table.insert(tdata.sets, {
label = set,
params = { param }
})
end
end
pargs[k] = nil
pargs[k .. '_td'] = nil
elseif k:find('^desc$') then
tdata.description = pargs[k .. '-td'] or v
end
end
return JSON:encode(tdata)
end
return p