Jump to content

Module:Parameter names example: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
allow custom display values
we should probably use the prefixedText for the template name for people who like making templates in funky namespaces
Line 33: Line 33:


-- Find the template name and call it with the arguments.
-- Find the template name and call it with the arguments.
local template = args._template or mw.title.getCurrentTitle().basePageTitle.text
local template = args._template or mw.title.getCurrentTitle().basePageTitle.prefixedText
frame = frame or mw.getCurrentFrame()
frame = frame or mw.getCurrentFrame()
return frame:expandTemplate{title = template, args = targs}
return frame:expandTemplate{title = template, args = targs}

Revision as of 10:29, 18 July 2014

-- This module implements {{parameter names example}}.

local p = {}

local function makeParam(s)
	local lb = '{'
	local rb = '}'
	return lb:rep(3) .. s .. rb:rep(3)
end

local function italicize(s)
	return "''" .. s .. "''"
end

function p._main(args, frame)
	-- Find how we want to format the arguments to the template.
	local formatFunc
	if args._display == 'italics' or args._display == 'italic' then
		formatFunc = italicize
	else
		formatFunc = makeParam
	end

	-- Build the table of template arguments.
	local targs = {}
	for k, v in pairs(args) do
		if type(k) == 'number' then
			targs[v] = formatFunc(v)
		elseif not k:find('^_') then
			targs[k] = v
		end
	end

	-- Find the template name and call it with the arguments.
	local template = args._template or mw.title.getCurrentTitle().basePageTitle.prefixedText
	frame = frame or mw.getCurrentFrame()
	return frame:expandTemplate{title = template, args = targs}
end

function p.main(frame)
	local args = require('Module:Arguments').getArgs(frame, {
		wrappers = 'Template:Parameter names example'
	})
	return p._main(args, frame)
end

return p