<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mbwiki.stairwaygames.work/w/index.php?action=history&amp;feed=atom&amp;title=Module%3AAsof</id>
	<title>Module:Asof - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mbwiki.stairwaygames.work/w/index.php?action=history&amp;feed=atom&amp;title=Module%3AAsof"/>
	<link rel="alternate" type="text/html" href="https://mbwiki.stairwaygames.work/w/index.php?title=Module:Asof&amp;action=history"/>
	<updated>2026-04-07T19:52:13Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://mbwiki.stairwaygames.work/w/index.php?title=Module:Asof&amp;diff=5672&amp;oldid=prev</id>
		<title>Admin coral island: Created page with &quot;-- &lt;pre&gt; Creates dated statements local p = {} local u = require(&quot;Dev:Utility&quot;) local tValidMonths = { 	january = 1, 	february = 2, 	march = 3, 	april = 4, 	may = 5, 	june = 6, 	july = 7, 	august = 8, 	september = 9, 	october = 10, 	november = 11, 	december = 12, }  --% Entry point Creates a dated statement and categorizes the page --@ frame (table) A scribunto frame --: (string) A string containing &quot;As of&quot;, and a category with the date function p.main(frame) 	local tArg...&quot;</title>
		<link rel="alternate" type="text/html" href="https://mbwiki.stairwaygames.work/w/index.php?title=Module:Asof&amp;diff=5672&amp;oldid=prev"/>
		<updated>2023-08-03T16:55:57Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;-- &amp;lt;pre&amp;gt; Creates dated statements local p = {} local u = require(&amp;quot;Dev:Utility&amp;quot;) local tValidMonths = { 	january = 1, 	february = 2, 	march = 3, 	april = 4, 	may = 5, 	june = 6, 	july = 7, 	august = 8, 	september = 9, 	october = 10, 	november = 11, 	december = 12, }  --% Entry point Creates a dated statement and categorizes the page --@ frame (table) A scribunto frame --: (string) A string containing &amp;quot;As of&amp;quot;, and a category with the date function p.main(frame) 	local tArg...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- &amp;lt;pre&amp;gt; Creates dated statements&lt;br /&gt;
local p = {}&lt;br /&gt;
local u = require(&amp;quot;Dev:Utility&amp;quot;)&lt;br /&gt;
local tValidMonths = {&lt;br /&gt;
	january = 1,&lt;br /&gt;
	february = 2,&lt;br /&gt;
	march = 3,&lt;br /&gt;
	april = 4,&lt;br /&gt;
	may = 5,&lt;br /&gt;
	june = 6,&lt;br /&gt;
	july = 7,&lt;br /&gt;
	august = 8,&lt;br /&gt;
	september = 9,&lt;br /&gt;
	october = 10,&lt;br /&gt;
	november = 11,&lt;br /&gt;
	december = 12,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--% Entry point Creates a dated statement and categorizes the page&lt;br /&gt;
--@ frame (table) A scribunto frame&lt;br /&gt;
--: (string) A string containing &amp;quot;As of&amp;quot;, and a category with the date&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local tArgs = u.getArgs(frame)&lt;br /&gt;
	local sYear = tonumber(tArgs[1])&lt;br /&gt;
	local sMonth = string.lower(tArgs[2] or &amp;quot;&amp;quot;)&lt;br /&gt;
	local sDay = tonumber(tArgs[3])&lt;br /&gt;
	local lc = tArgs.lc&lt;br /&gt;
	local nocat = tArgs.nocat&lt;br /&gt;
	local prefix = lc and &amp;quot;as of &amp;quot; or &amp;quot;As of &amp;quot;&lt;br /&gt;
	local lang = mw.language.new(&amp;quot;en&amp;quot;)&lt;br /&gt;
	local sFormat = &amp;quot;Y&amp;quot;&lt;br /&gt;
	local isYear, isMonth, isDay = p.isValidDate(sYear, sMonth, sDay)&lt;br /&gt;
	&lt;br /&gt;
	if not isYear then &lt;br /&gt;
		return error(&amp;quot;Invalid date, year `&amp;quot; .. tostring(tArgs[1]) .. &amp;quot;` is wrong.&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if isMonth then&lt;br /&gt;
		sMonth = tonumber(sMonth) or tValidMonths[sMonth]&lt;br /&gt;
		sFormat = &amp;quot;F &amp;quot; .. sFormat&lt;br /&gt;
		if isDay then &lt;br /&gt;
			sFormat = &amp;quot;d &amp;quot; .. sFormat&lt;br /&gt;
		else&lt;br /&gt;
			sDay = os.date(&amp;quot;%d&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
	else &lt;br /&gt;
		sDay = sDay or os.date(&amp;quot;%d&amp;quot;) &lt;br /&gt;
		sMonth = os.date(&amp;quot;%m&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local sDefOutput = prefix .. lang:formatDate(sFormat, sYear .. &amp;quot;/&amp;quot; .. sMonth .. &amp;quot;/&amp;quot; .. sDay)&lt;br /&gt;
	local sOutput = tArgs.alt or sDefOutput &lt;br /&gt;
	&lt;br /&gt;
	if not nocat then&lt;br /&gt;
		sOutput = sOutput .. &amp;quot; [[Category:Dated statements from &amp;quot; .. sYear .. &amp;quot;]]&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return sOutput&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--% Checks if the date is valid&lt;br /&gt;
--@ year (string) The required year&lt;br /&gt;
--@ month (string) The required month &lt;br /&gt;
--@ day (string) The required day&lt;br /&gt;
--: (boolean) True if valid year&lt;br /&gt;
--: (boolean) True if valid month&lt;br /&gt;
--: (boolean) True if valid day&lt;br /&gt;
function p.isValidDate(year, month, day)&lt;br /&gt;
	local tValidDays = {31, 28, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30}&lt;br /&gt;
	local bYear, bMonth, bDay&lt;br /&gt;
	&lt;br /&gt;
	month = tonumber(month) or string.lower(month)&lt;br /&gt;
	month = tonumber(month) or tValidMonths[month]&lt;br /&gt;
	mw.log(year)&lt;br /&gt;
	if tonumber(year) and tonumber(year) &amp;gt; -1 then&lt;br /&gt;
		if year % 4 == 0 and not (year % 100 == 0 and year % 400 &amp;gt; 0) then&lt;br /&gt;
			tValidDays[2] = 29&lt;br /&gt;
		end&lt;br /&gt;
		bYear = true&lt;br /&gt;
	end&lt;br /&gt;
	if tValidMonths[month] or tValidDays[month] then&lt;br /&gt;
		bMonth = true&lt;br /&gt;
		if tonumber(month) and tonumber(day) and&lt;br /&gt;
			0 &amp;lt; day and tValidDays[month] &amp;gt;= tonumber(day) then&lt;br /&gt;
			bDay = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return bYear, bMonth, bDay&lt;br /&gt;
end&lt;br /&gt;
-- end date functions&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Admin coral island</name></author>
	</entry>
</feed>