<?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%2FUser%3AAgent-008</id>
	<title>Module:Sandbox/User:Agent-008 - 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%2FUser%3AAgent-008"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/User:Agent-008&amp;action=history"/>
	<updated>2026-07-28T16:44:40Z</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/User:Agent-008&amp;diff=146356&amp;oldid=prev</id>
		<title>imported&gt;Agent-008 at 01:40, 7 January 2018</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/User:Agent-008&amp;diff=146356&amp;oldid=prev"/>
		<updated>2018-01-07T01:40:22Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- Google Code-in 2017, Introduction to Lua in Wikipedia&lt;br /&gt;
-- [Lua task #03] Create your own Lua module on English Wikipedia&lt;br /&gt;
&lt;br /&gt;
local p = {} -- p stands for package&lt;br /&gt;
&lt;br /&gt;
function p.hello( frame )&lt;br /&gt;
    return &amp;quot;Hello, world!&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.Hi = function(frame)&lt;br /&gt;
	strName = frame.args.name or &amp;quot;Jimbo&amp;quot;&lt;br /&gt;
	return &amp;quot;Hello from Lua to my friend &amp;quot; .. strName .. &amp;quot;.&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.temperature = function(frame)&lt;br /&gt;
	if frame.args.celsius then cel = frame.args.celsius else cel = 0 end&lt;br /&gt;
	fah = cel * 9 / 5 + 32&lt;br /&gt;
	msg = cel .. &amp;quot; degrees Celsius is &amp;quot; .. fah .. &amp;quot; degrees Fahrenheit.&amp;quot;&lt;br /&gt;
	if tonumber(cel) &amp;gt; 9 then msg = msg .. &amp;quot; It is warm.&amp;quot; else msg = msg .. &amp;quot; It is cold.&amp;quot; end&lt;br /&gt;
	return msg&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.times = function(frame)&lt;br /&gt;
	local num = tonumber( frame.args.num ) or 2&lt;br /&gt;
	local out = num .. &amp;quot; times table&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
	for i = 1, 12 do&lt;br /&gt;
		out = out .. num .. &amp;quot; times &amp;quot; .. i .. &amp;quot; equals &amp;quot; .. i * num .. &amp;quot;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return out&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.mum = function(frame)&lt;br /&gt;
	local family = {&amp;quot;Dad&amp;quot;, &amp;quot;Mum&amp;quot;, &amp;quot;Uncle Stan&amp;quot;, &amp;quot;Aunty Elsie&amp;quot;, &amp;quot;Brian&amp;quot;, &amp;quot;Agent 007&amp;quot;, &amp;quot;Agent 008&amp;quot;, &amp;quot;World&amp;quot;}&lt;br /&gt;
	local msg = &amp;quot;&amp;quot;&lt;br /&gt;
	for i=1,#family do&lt;br /&gt;
		msg = msg .. &amp;quot;Hello &amp;quot; .. family[i] .. &amp;quot;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	return msg&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.langnames = function( frame )&lt;br /&gt;
	local langs = mw.language.fetchLanguageNames()&lt;br /&gt;
	local langlist = &amp;quot;&amp;quot;&lt;br /&gt;
	local count = 0&lt;br /&gt;
	for key, value in pairs( langs ) do&lt;br /&gt;
		langlist = langlist .. key .. &amp;quot; - &amp;quot; .. value .. &amp;quot;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
		count = count + 1&lt;br /&gt;
	end&lt;br /&gt;
	return langlist .. &amp;quot;&amp;lt;br&amp;gt;= &amp;quot; .. count .. &amp;quot; languages&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.pageinfo = function(frame)&lt;br /&gt;
	if frame.args.title and #(frame.args.title) ~= 0 then&lt;br /&gt;
		local titleStr = frame.args.title&lt;br /&gt;
		local title = mw.title.new(titleStr)&lt;br /&gt;
		local exists = title.id ~= 0&lt;br /&gt;
		local isRedirect = title.isRedirect&lt;br /&gt;
		return titleStr .. (exists and &amp;quot; exists &amp;quot; or &amp;quot; does not exist &amp;quot;) .. &amp;quot;and is &amp;quot; .. (isRedirect and &amp;quot;a redirect&amp;quot; or &amp;quot;not a redirect&amp;quot;) .. &amp;quot;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;does not exist and is not a redirect&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local processEmptyString = function(s)&lt;br /&gt;
	return s ~= nil and s or &amp;quot;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local removeEndSpaces&lt;br /&gt;
removeEndSpaces = function(s)&lt;br /&gt;
	if not s or #s == 0 then--we know that it is not a space&lt;br /&gt;
		return s&lt;br /&gt;
	elseif #s == 1 then&lt;br /&gt;
		return s == &amp;quot; &amp;quot; and &amp;quot;&amp;quot; or s&lt;br /&gt;
	else&lt;br /&gt;
		if string.sub(s,1,1) == &amp;quot; &amp;quot; then return removeEndSpaces(string.sub(s,2,-1))--successively remove spaces from the beginning&lt;br /&gt;
		elseif string.sub(s,-1,-1) == &amp;quot; &amp;quot; then return removeEndSpaces(string.sub(s,1,-2))--successively remove spaces from the end&lt;br /&gt;
		else return s--s has no spaces left at its beginning or its end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local shouldPutSpaces = function(s)&lt;br /&gt;
	return string.find(removeEndSpaces(s),&amp;quot; &amp;quot;) or string.find(removeEndSpaces(s),&amp;#039;%D&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local formattedR = function(tab)--the table of arguments which format the r (i.e. label, show, cap)&lt;br /&gt;
	if tab.label then&lt;br /&gt;
		return removeEndSpaces(tab.label) .. &amp;quot; &amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		correctCaseR = (tab.cap and (removeEndSpaces(tab.cap) == &amp;quot;yes&amp;quot; or removeEndSpaces(tab.cap) == &amp;quot;y&amp;quot;)) and &amp;quot;R&amp;quot; or &amp;quot;r&amp;quot;&lt;br /&gt;
		if tab.show then&lt;br /&gt;
			sh = removeEndSpaces(tab.show)&lt;br /&gt;
			if sh == &amp;quot;word&amp;quot; then&lt;br /&gt;
				return correctCaseR .. &amp;quot;eigned &amp;quot;&lt;br /&gt;
			elseif sh == &amp;quot;colon&amp;quot; then&lt;br /&gt;
				return correctCaseR .. &amp;quot;eign: &amp;quot;&lt;br /&gt;
			elseif sh == &amp;quot;none&amp;quot; then&lt;br /&gt;
				return correctCaseR .. &amp;quot;. &amp;quot;&lt;br /&gt;
			elseif (sh == &amp;quot;link&amp;quot; or sh == &amp;quot;lk&amp;quot;) then&lt;br /&gt;
				return &amp;quot;[[Reign|&amp;quot; .. correctCaseR .. &amp;quot;]]. &amp;quot;&lt;br /&gt;
			elseif sh == &amp;quot;lword&amp;quot; then&lt;br /&gt;
				return &amp;quot;[[Reign|&amp;quot; .. correctCaseR .. &amp;quot;eigned&amp;quot; .. &amp;quot;]] &amp;quot;&lt;br /&gt;
			elseif sh == &amp;quot;lcolon&amp;quot; then&lt;br /&gt;
				return &amp;quot;[[Reign|&amp;quot; .. correctCaseR .. &amp;quot;eign&amp;quot; .. &amp;quot;]] &amp;quot;&lt;br /&gt;
			else--default case - none of the above&lt;br /&gt;
				return &amp;quot;&amp;lt;abbr title=\&amp;quot;reign\&amp;quot;&amp;gt;&amp;quot; .. correctCaseR .. &amp;quot;&amp;lt;/abbr&amp;gt;. &amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			return &amp;quot;&amp;lt;abbr title=\&amp;quot;reign\&amp;quot;&amp;gt;&amp;quot; .. correctCaseR .. &amp;quot;&amp;lt;/abbr&amp;gt;. &amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local formattedDash = function(tab)--the table of arguments which format the dash (i.e. the dates which go before and after. The dates do not have their eras yet.)&lt;br /&gt;
	return (shouldPutSpaces(tab[1]) or shouldPutSpaces(tab[2])) and &amp;quot; – &amp;quot; or &amp;quot;–&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.reign = function(frame)&lt;br /&gt;
	preString = (frame.args[&amp;quot;pre-date&amp;quot;] and #(frame.args[&amp;quot;pre-date&amp;quot;]) &amp;gt; 0) and (frame.args[&amp;quot;pre-date&amp;quot;] .. &amp;quot;, &amp;quot;) or &amp;quot;&amp;quot;&lt;br /&gt;
	midString = (frame.args[&amp;quot;mid-date&amp;quot;] and #(frame.args[&amp;quot;mid-date&amp;quot;]) &amp;gt; 0) and (&amp;quot;, &amp;quot; .. frame.args[&amp;quot;mid-date&amp;quot;] .. &amp;quot;, &amp;quot;) or &amp;quot;, &amp;quot;&lt;br /&gt;
	postString = (frame.args[&amp;quot;post-date&amp;quot;] and #(frame.args[&amp;quot;post-date&amp;quot;]) &amp;gt; 0) and (&amp;quot;, &amp;quot; .. frame.args[&amp;quot;post-date&amp;quot;]) or &amp;quot;&amp;quot;&lt;br /&gt;
	s1 = processEmptyString(removeEndSpaces(frame.args[1]))&lt;br /&gt;
	s2 = processEmptyString(removeEndSpaces(frame.args[2]))&lt;br /&gt;
	if not frame.args[3] then&lt;br /&gt;
		if (s1 and #removeEndSpaces(s1) &amp;gt; 0) or (s2 and #removeEndSpaces(s2) &amp;gt; 0) then&lt;br /&gt;
			if (s1 and #removeEndSpaces(s1) &amp;gt; 0) and (s2 and #removeEndSpaces(s2) &amp;gt; 0) then--both arguments are passed&lt;br /&gt;
				return formattedR({label=frame.args.label,show=frame.args.show,cap=frame.args.cap}) .. preString .. s1 .. formattedDash({s1,s2}) .. s2 .. postString .. (frame.args.era and (&amp;quot; &amp;quot; .. removeEndSpaces(frame.args.era)) or &amp;quot;&amp;quot;)&lt;br /&gt;
			else&lt;br /&gt;
				if (s1 and #removeEndSpaces(s1) &amp;gt; 0) then--only argument 1 is passed&lt;br /&gt;
					return formattedR({label=frame.args.label,show=frame.args.show,cap=frame.args.cap}) .. preString .. s1 .. (shouldPutSpaces(s1) and &amp;quot; – &amp;quot; or &amp;quot;–&amp;quot;) .. postString .. (frame.args.era and (&amp;quot; &amp;quot; .. removeEndSpaces(frame.args.era)) or &amp;quot;&amp;quot;)&lt;br /&gt;
				else--only argument 2 is passed&lt;br /&gt;
					return formattedR({label=frame.args.label,show=frame.args.show,cap=frame.args.cap}) .. preString .. &amp;quot;?&amp;quot; .. (shouldPutSpaces(s2) and &amp;quot; – &amp;quot; or &amp;quot;–&amp;quot;) .. s2 .. postString .. (frame.args.era and (&amp;quot; &amp;quot; .. removeEndSpaces(frame.args.era)) or &amp;quot;&amp;quot;)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		elseif frame.args.single then&lt;br /&gt;
			return formattedR({label=frame.args.label,show=frame.args.show,cap=frame.args.cap}) .. preString .. processEmptyString(frame.args.single) .. postString .. (frame.args.era and (&amp;quot; &amp;quot; .. removeEndSpaces(frame.args.era)) or &amp;quot;&amp;quot;)&lt;br /&gt;
		else--no arguments are passed&lt;br /&gt;
			return &amp;quot;reign must have at least 1 date argument&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		s3 = processEmptyString(removeEndSpaces(frame.args[3]))--note that in order for s3 and s4 to work, both must be present, as well as both of s1 and s2.&lt;br /&gt;
		s4 = processEmptyString(removeEndSpaces(frame.args[4]))--otherwise, it is impossible to figure out which reigns are ranges and which are single years.&lt;br /&gt;
		return formattedR({label=frame.args.label,show=frame.args.show,cap=frame.args.cap}) .. preString .. s1 .. formattedDash({s1,s2}) .. s2 .. (frame.args.era and (&amp;quot; &amp;quot; .. removeEndSpaces(frame.args.era)) or &amp;quot;&amp;quot;) .. midString .. s3 .. formattedDash({s3,s4}) .. s4 .. postString .. (frame.args.era and (&amp;quot; &amp;quot; .. removeEndSpaces(frame.args.era)) or &amp;quot;&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Agent-008</name></author>
	</entry>
</feed>