Jump to content

Module:Parameter names example: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
we should probably use the prefixedText for the template name for people who like making templates in funky namespaces
use the current page instead of the base page if we are on a /sandbox subpage, and use pcall to expand the template in case there are any errors
Line 32: Line 32:
end
end


-- Find the template name and call it with the arguments.
-- Find the template name.
local template
local template = args._template or mw.title.getCurrentTitle().basePageTitle.prefixedText
if args._template then
template = args._template
else
local currentTitle = mw.title.getCurrentTitle()
if currentTitle.prefixedText:find('/sandbox$') then
template = currentTitle.prefixedText
else
template = currentTitle.basePageTitle.prefixedText
end
end

-- Call the template with the arguments.
frame = frame or mw.getCurrentFrame()
frame = frame or mw.getCurrentFrame()
local success, result = pcall(
return frame:expandTemplate{title = template, args = targs}
frame.expantTemplate,
frame,
{title = template, args = targs}
)
if success then
return result
else
return ''
end
end
end



Revision as of 02:06, 25 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.
	local template
	if args._template then
		template = args._template
	else
		local currentTitle = mw.title.getCurrentTitle()
		if currentTitle.prefixedText:find('/sandbox$') then
			template = currentTitle.prefixedText
		else
			template = currentTitle.basePageTitle.prefixedText
		end
	end

	-- Call the template with the arguments.
	frame = frame or mw.getCurrentFrame()
	local success, result = pcall(
		frame.expantTemplate,
		frame,
		{title = template, args = targs}
	)
	if success then
		return result
	else
		return ''
	end
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