Module:TemplateBox: Difference between revisions
From Neodyland Wiki
More actions
m corr |
m tmp-auto-save |
||
| Line 1: | Line 1: | ||
local p = {} | 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"} }) | -- =p.test({ args={a="b"} }) | ||
Revision as of 22:11, 23 July 2013
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