Module:TemplateBox: Difference between revisions
From Neodyland Wiki
More actions
m convert to string at the correct place |
m I thought it's always string... |
||
| Line 26: | Line 26: | ||
for k, v in pairs( pargs ) do | for k, v in pairs( pargs ) do | ||
if | if type( k ) == 'number' then | ||
local paramNumber = | local paramNumber = k | ||
local param = pargs[k .. '-td'] or v | local param = pargs[k .. '-td'] or v | ||
local label = pargs[k .. '-label-td'] or pargs[k .. '-label'] | local label = pargs[k .. '-label-td'] or pargs[k .. '-label'] | ||
Revision as of 10:51, 12 July 2013
This documentation is transcluded from Module:TemplateBox/doc.
local p = {}
-- =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 paramNumber = k
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'], '/', 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