<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASandbox%2FErutuon%2Fparameters</id>
	<title>Module:Sandbox/Erutuon/parameters - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASandbox%2FErutuon%2Fparameters"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Erutuon/parameters&amp;action=history"/>
	<updated>2026-05-18T09:01:58Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://stockhub.co/index.php?title=Module:Sandbox/Erutuon/parameters&amp;diff=145397&amp;oldid=prev</id>
		<title>imported&gt;Erutuon: fix errorf</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Erutuon/parameters&amp;diff=145397&amp;oldid=prev"/>
		<updated>2018-08-30T00:29:36Z</updated>

		<summary type="html">&lt;p&gt;fix errorf&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local function errorf(level, ...)&lt;br /&gt;
	if type(level) == &amp;quot;number&amp;quot; then&lt;br /&gt;
		return error(string.format(...), level + 1)&lt;br /&gt;
	else -- level is actually the format string.&lt;br /&gt;
		return error(string.format(level, ...), 2)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- From [[wikt:Module:table]].&lt;br /&gt;
local function defaultKeySort(key1, key2)&lt;br /&gt;
	-- &amp;quot;number&amp;quot; &amp;lt; &amp;quot;string&amp;quot;, so numbers will be sorted before strings.&lt;br /&gt;
	local type1, type2 = type(key1), type(key2)&lt;br /&gt;
	if type1 ~= type2 then&lt;br /&gt;
		return type1 &amp;lt; type2&lt;br /&gt;
	else&lt;br /&gt;
		return key1 &amp;lt; key2&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.make_param_list(params_set)&lt;br /&gt;
	local params_sorted = {}&lt;br /&gt;
	for param_name in pairs(params_set) do&lt;br /&gt;
		table.insert(params_sorted, param_name)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.sort(params_sorted, defaultKeySort)&lt;br /&gt;
	&lt;br /&gt;
	return params_sorted&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.get_parameters(pagename)&lt;br /&gt;
	local page&lt;br /&gt;
	if type(pagename) == &amp;quot;string&amp;quot; then&lt;br /&gt;
		page = mw.title.new(pagename)&lt;br /&gt;
	elseif type(pagename) == &amp;quot;table&amp;quot; and pagename.nsText then&lt;br /&gt;
		page = pagename&lt;br /&gt;
		pagename = page.fullText&lt;br /&gt;
	else&lt;br /&gt;
		errorf(&amp;quot;Bad argument #1 to get_parameters (expected pagename or page title, got %s)&amp;quot;,&lt;br /&gt;
			type(pagename))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local content = page:getContent()&lt;br /&gt;
	&lt;br /&gt;
	if not content then&lt;br /&gt;
		errorf(&amp;quot;The page &amp;#039;%s&amp;#039; does not have any content.&amp;quot;, pagename)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local params = {}&lt;br /&gt;
	for param_name in content:gmatch &amp;#039;{{{([%w _]+)%f[|]&amp;#039; do -- Not a completely accurate pattern.&lt;br /&gt;
		--This code is not quite accurate, because PHP only converts integer&lt;br /&gt;
		-- parameter names to Lua numbers; float parameter names stay strings.&lt;br /&gt;
		if tonumber(param_name) then&lt;br /&gt;
			param_name = tonumber(param_name)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		params[param_name] = true&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return params&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.check_params(frame)&lt;br /&gt;
	local template_title = mw.title.getCurrentTitle()&lt;br /&gt;
	&lt;br /&gt;
	local params_set = p.get_parameters(template_title)&lt;br /&gt;
	&lt;br /&gt;
	if frame.args.log then&lt;br /&gt;
		mw.log(&amp;quot;get_parameters found the following parameters:&amp;quot;,&lt;br /&gt;
			table.concat(p.make_param_list(params_set), &amp;quot;, &amp;quot;))&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local unrecognized_params = {}&lt;br /&gt;
	for param_name in pairs(frame:getParent().args) do&lt;br /&gt;
		if not params_set[param_name] then&lt;br /&gt;
			unrecognized_params[param_name] = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if next(unrecognized_params) then&lt;br /&gt;
		local unrecognized_params_list = p.make_param_list(unrecognized_params)&lt;br /&gt;
		&lt;br /&gt;
		errorf(&amp;quot;The parameters %s %s not recognized&amp;quot;,&lt;br /&gt;
			table.concat(unrecognized_params_list, &amp;quot;, &amp;quot;),&lt;br /&gt;
			unrecognized_params_list[2] and &amp;quot;are&amp;quot; or &amp;quot;is&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.show_parameters(frame)&lt;br /&gt;
	local template_name = frame.args[1]&lt;br /&gt;
	&lt;br /&gt;
	if not template_name then&lt;br /&gt;
		error(&amp;quot;Template name (parameter 1) is required&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	template_name = &amp;quot;Template:&amp;quot; .. template_name&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(p.make_param_list(p.get_parameters(template_name)), &amp;quot;, &amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Erutuon</name></author>
	</entry>
</feed>