Difference between revisions of "Parameters"
From Unofficial Stationeers Wiki
(Wikilist) |
(Code output) |
||
| Line 11: | Line 11: | ||
end | end | ||
| − | local function extractParams(args) | + | local function extractParams(args, transform) |
local removeDuplicates = require('Module:TableTools').removeDuplicates | local removeDuplicates = require('Module:TableTools').removeDuplicates | ||
| + | transform = transform or '%s' | ||
local parameters = {} | local parameters = {} | ||
for parameter in string.gmatch(args.base, '{{{(.-)%f[}|<>]') do | for parameter in string.gmatch(args.base, '{{{(.-)%f[}|<>]') do | ||
| − | table.insert(parameters, parameter) | + | table.insert(parameters, string.format(transform, parameter)) |
end | end | ||
return removeDuplicates(parameters) | return removeDuplicates(parameters) | ||
| + | end | ||
| + | |||
| + | function p._code(args) | ||
| + | return string.format([[{{%s | ||
| + | %s}}]], | ||
| + | (args._base or mw.title.getCurrentTitle().baseText), | ||
| + | table.concat(extractParams(args, '| %s = \n'))) | ||
end | end | ||
| Line 27: | Line 35: | ||
function p._list(args) | function p._list(args) | ||
| − | + | return table.concat(extractParams(args, '* %s\n')) | |
| − | |||
| − | |||
| − | |||
| − | |||
end | end | ||
| + | p.code = makeInvokeFunction('_code') | ||
p.demo = makeInvokeFunction('_demo') | p.demo = makeInvokeFunction('_demo') | ||
p.list = makeInvokeFunction('_list') | p.list = makeInvokeFunction('_list') | ||
return p | return p | ||
Revision as of 12:48, 5 June 2015
-- This module implements [[Template:Parameters]].
-- [SublimeLinter luacheck-globals:mw]
local p = {}
local function makeInvokeFunction(funcName)
return function(frame)
local getArgs = require('Module:Arguments').getArgs
return p[funcName](getArgs(frame))
end
end
local function extractParams(args, transform)
local removeDuplicates = require('Module:TableTools').removeDuplicates
transform = transform or '%s'
local parameters = {}
for parameter in string.gmatch(args.base, '{{{(.-)%f[}|<>]') do
table.insert(parameters, string.format(transform, parameter))
end
return removeDuplicates(parameters)
end
function p._code(args)
return string.format([[{{%s
%s}}]],
(args._base or mw.title.getCurrentTitle().baseText),
table.concat(extractParams(args, '| %s = \n')))
end
function p._demo(args)
return string.format('{{Parameter names example|_template=%s|%s}}',
args._base or '', table.concat(extractParams(args), '|'))
end
function p._list(args)
return table.concat(extractParams(args, '* %s\n'))
end
p.code = makeInvokeFunction('_code')
p.demo = makeInvokeFunction('_demo')
p.list = makeInvokeFunction('_list')
return p
