The wiki has moved!

Visit the new wiki at stationeers-wiki.com The old wiki here at legacy.stationeers-wiki.com will sunset eventually.

Edits made after the 7th of March 6PM EST were NOT carried over to the new server as previously announced right here in this box.

 Actions

Module

Parameters

From Unofficial Stationeers Wiki

Revision as of 13:48, 5 June 2015 by Izkala (talk) (Code output)

-- 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