Template:Documentation subpage and Module:Parameter names example: Difference between pages

From Frontierpedia, the Microsoft Agent encyclopedia
(Difference between pages)
m (1 revision imported: lets try again)
 
en>Andrybak
(add popular variants of demonstration purposes parameters: nocat=yes, categories=no, and demo=yes)
 
Line 1: Line 1:
<includeonly><!--
-- This module implements {{parameter names example}}.
-->{{#ifeq:{{lc:{{SUBPAGENAME}}}} |{{{override|doc}}}
    | <!--(this template has been transcluded on a /doc or /{{{override}}} page)-->
</includeonly><!--


      -->{{#ifeq:{{{doc-notice|show}}} |show
local p = {}
          | {{Mbox
            | type = notice
            | style = margin-bottom:1.0em;
            | image = [[File:Edit-copy green.svg|40px|alt=|link=]]
            | text =
{{strong|This is a [[Wikipedia:Template documentation|documentation]] [[Wikipedia:Subpages|subpage]]}} for {{terminate sentence|{{{1|[[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]}}}}}<br />It contains usage information, [[Wikipedia:Categorization|categories]] and other content that is not part of the original {{#if:{{{text2|}}} |{{{text2}}} |{{#if:{{{text1|}}} |{{{text1}}} |{{#ifeq:{{SUBJECTSPACE}} |{{ns:User}} |{{lc:{{SUBJECTSPACE}}}} template page |{{#if:{{SUBJECTSPACE}} |{{lc:{{SUBJECTSPACE}}}} page|article}}}}}}}}.
            }}
        }}<!--


      -->{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}<!--
local function makeParam(s)
local lb = '&#123;'
local rb = '&#125;'
return lb:rep(3) .. s .. rb:rep(3)
end


      -->{{#if:{{{inhibit|}}} |<!--(don't categorize)-->
local function italicize(s)
          |  <includeonly><!--
return "''" .. s .. "''"
              -->{{#ifexist:{{NAMESPACE}}:{{BASEPAGENAME}}
end
                  | [[Category:{{#switch:{{SUBJECTSPACE}} |Template=Template |Module=Module |User=User |#default=Wikipedia}} documentation pages]]
                  | [[Category:Documentation subpages without corresponding pages]]
                  }}<!--
          --></includeonly>
        }}<!--


(completing initial #ifeq: at start of template:)
local function plain(s)
--><includeonly>
return s
    | <!--(this template has not been transcluded on a /doc or /{{{override}}} page)-->
end
    }}<!--
 
--></includeonly><noinclude>{{Documentation}}</noinclude>
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
elseif args._display == 'plain' then
formatFunc = plain
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
targs['nocat'] = 'yes';
targs['categories'] = 'no';
targs['demo'] = 'yes';
 
-- 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.expandTemplate,
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

Revision as of 04:07, 26 March 2020

Documentation for this module may be created at Module:Parameter names example/doc

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

local p = {}

local function makeParam(s)
	local lb = '&#123;'
	local rb = '&#125;'
	return lb:rep(3) .. s .. rb:rep(3)
end

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

local function plain(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
	elseif args._display == 'plain' then
		formatFunc = plain
	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
	targs['nocat'] = 'yes';
	targs['categories'] = 'no';
	targs['demo'] = 'yes';

	-- 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.expandTemplate,
		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