Diferencia entre revisiones de «Módulo:Parameter names example»

De Familia Sanchez Arjona
Saltar a: navegación, buscar
(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)
Línea 32: Línea 32:
 
end
 
end
  
-- Find the template name and call it with the arguments.
+
-- Find the template name.
local template = args._template or mw.title.getCurrentTitle().basePageTitle.prefixedText
+
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()
 
frame = frame or mw.getCurrentFrame()
return frame:expandTemplate{title = template, args = targs}
+
local success, result = pcall(
 +
frame.expantTemplate,
 +
frame,
 +
{title = template, args = targs}
 +
)
 +
if success then
 +
return result
 +
else
 +
return ''
 +
end
 
end
 
end
  

Revisión del 04:06 25 jul 2014

{{{title}}}
{{{above}}}
{{{subheader}}}
{{{image}}}
{{{caption}}}
{{{header1}}}
{{{label2}}} {{{data2}}}
{{{label3}}} {{{data3}}}
{{{below}}}

This module implements {{Parameter names example}} (also known as {{Generic template demo}}). It creates a template demonstration such as that shown opposite. Please see the template page for full documentation.



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