<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mindpowe.red/wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3AMotd</id>
	<title>Module:Motd - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mindpowe.red/wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3AMotd"/>
	<link rel="alternate" type="text/html" href="https://mindpowe.red/wiki/index.php?title=Module:Motd&amp;action=history"/>
	<updated>2026-04-06T09:46:55Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>https://mindpowe.red/wiki/index.php?title=Module:Motd&amp;diff=8628&amp;oldid=prev</id>
		<title>imported&gt;Anomalocaris: &lt;tt&gt; → &lt;samp&gt;</title>
		<link rel="alternate" type="text/html" href="https://mindpowe.red/wiki/index.php?title=Module:Motd&amp;diff=8628&amp;oldid=prev"/>
		<updated>2018-05-11T02:23:00Z</updated>

		<summary type="html">&lt;p&gt;&amp;lt;tt&amp;gt; → &amp;lt;samp&amp;gt;&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;
function leapyear(year)&lt;br /&gt;
	local rem = year - 4 * math.floor(year/4)&lt;br /&gt;
	local leapyear&lt;br /&gt;
	if (rem&amp;gt;0.01) then&lt;br /&gt;
		leapyear = 0&lt;br /&gt;
	else&lt;br /&gt;
		leapyear = 1 -- i.e. add a day to dates beyond February 28&lt;br /&gt;
	end&lt;br /&gt;
    return leapyear&lt;br /&gt;
end&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
function p.random(frame)&lt;br /&gt;
	return p.main(frame, true)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame, rnd)&lt;br /&gt;
	local parent=frame.getParent(frame) or {}&lt;br /&gt;
	local yearparameter = (parent and parent.args.year) or frame.args.year&lt;br /&gt;
	local ydayparameter = (parent and parent.args.day) or frame.args.day&lt;br /&gt;
	local yday = ydayparameter&lt;br /&gt;
	if yday then&lt;br /&gt;
		yday = tonumber(yday) -- keep nil as nil, but tonumber otherwise; may be nil *now*.&lt;br /&gt;
	end&lt;br /&gt;
	local osdate = os.date(&amp;quot;!*t&amp;quot;, nil)&lt;br /&gt;
	math.randomseed(tonumber(osdate.sec) + 60 * tonumber(osdate.min) + 3600 * tonumber(osdate.hour) + 24 * 3600 * tonumber(osdate.yday)) -- random wasn't resetting, try this&lt;br /&gt;
	if rnd then&lt;br /&gt;
		yday = yday or math.random(366)&lt;br /&gt;
	else &lt;br /&gt;
		yday = yday or osdate.yday&lt;br /&gt;
	end&lt;br /&gt;
	yday = tonumber(yday) or 1 -- setting to number.  Just in case, setting to 1&lt;br /&gt;
	local year&lt;br /&gt;
	if rnd then&lt;br /&gt;
		year = yearparameter or math.random(2006, 2015)&lt;br /&gt;
	else&lt;br /&gt;
		year = yearparameter or osdate.year&lt;br /&gt;
	end&lt;br /&gt;
	local flag, mottos = pcall(mw.loadData,&amp;quot;Module:Motd/data/&amp;quot; .. tostring(year))&lt;br /&gt;
	while ((flag == false) and (year &amp;gt; 2005)) do&lt;br /&gt;
		year = year - 1 -- look the year before for mottos&lt;br /&gt;
	    flag, mottos = pcall(mw.loadData,&amp;quot;Module:Motd/data/&amp;quot; .. tostring(year))&lt;br /&gt;
	    if ydayparameter and mottos then&lt;br /&gt;
	        if not mottos [yday+leapyear(year)] then&lt;br /&gt;
	    		flag = false -- if a specific day is required by parameter, throw out a year without this day&lt;br /&gt;
	        end&lt;br /&gt;
    	end&lt;br /&gt;
	end&lt;br /&gt;
	local motto&lt;br /&gt;
	local k = 0&lt;br /&gt;
	repeat&lt;br /&gt;
		k = k + 1&lt;br /&gt;
		motto = mottos[yday + leapyear(year)] -- if no motto for this day, try another day&lt;br /&gt;
		yday = math.random(366)&lt;br /&gt;
	until ((motto) or (k &amp;gt; 100))&lt;br /&gt;
	return frame:preprocess(motto or &amp;quot;No matter where you go, there you are&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.read(frame)&lt;br /&gt;
    local parent=frame.getParent(frame) or {}&lt;br /&gt;
    local currentpage, from, to&lt;br /&gt;
    ---- args in the #invoke itself trump args in the parent frame&lt;br /&gt;
    currentpage = (parent and parent.args.page) or frame.args.page&lt;br /&gt;
    from = (parent and parent.args.from) or frame.args.from or 0&lt;br /&gt;
    to = (parent and parent.args.to) or frame.args.to or 9999&lt;br /&gt;
    from, to = tonumber(from), tonumber(to) -- they get passed in as strings!&lt;br /&gt;
    -- from and to are kludges to get part of the data when I start getting too much expanded template errors (not needed!)&lt;br /&gt;
    -- I'm not sure getting the current page makes sense but I had the code handy so I'll leave it.&lt;br /&gt;
    local pagepointer&lt;br /&gt;
    if not(currentpage) then&lt;br /&gt;
        pagepointer=mw.title.getCurrentTitle()&lt;br /&gt;
        assert(pagepointer,&amp;quot;failed to access getCurrentTitle&amp;quot;)&lt;br /&gt;
        currentpage=pagepointer.fullText&lt;br /&gt;
    else pagepointer=mw.title.new(currentpage)&lt;br /&gt;
        assert(pagepointer,&amp;quot;failed to access mw.title.new(&amp;quot;..tostring(currentpage)..&amp;quot;)&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
    ---- get the text of the currentpage&lt;br /&gt;
    local text=pagepointer.getContent(pagepointer)&lt;br /&gt;
    assert (text,&amp;quot;error: failed to get text from &amp;quot;.. currentpage)&lt;br /&gt;
    local linkmatch = &amp;quot;%[%[(.-)%]%]&amp;quot;&lt;br /&gt;
    local prowl=mw.ustring.gmatch(text,linkmatch)&lt;br /&gt;
    local archive={}&lt;br /&gt;
    local link=prowl()&lt;br /&gt;
    local count = 0&lt;br /&gt;
    while link do&lt;br /&gt;
    	if (count &amp;gt;= from) and (count &amp;lt;= to) then&lt;br /&gt;
    	    link = mw.ustring.gmatch(link,&amp;quot;(.-)%|&amp;quot;)() or link&lt;br /&gt;
    	    flag, contents = pcall(frame.expandTemplate, frame, {title = link, args = nil})&lt;br /&gt;
            -- table.insert(archive,'[==[' .. link .. ']==],&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;')&lt;br /&gt;
            -- I don't think I actually need to include the link for this use&lt;br /&gt;
            table.insert(archive,'[==[' .. contents .. ']==],&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;')&lt;br /&gt;
        end&lt;br /&gt;
        count = count + 1&lt;br /&gt;
        link=prowl()&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local output=&amp;quot;&amp;quot;&lt;br /&gt;
    for i = 1, table.maxn(archive) do&lt;br /&gt;
        output=output..(archive[i] or &amp;quot;&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
    output = mw.ustring.gsub(output,&amp;quot;,&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;$&amp;quot;,&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;)&lt;br /&gt;
    output = &amp;quot;&amp;lt;nowiki&amp;gt;return {&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;..output..&amp;quot;}&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
    return frame.preprocess(frame,output)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.read11(frame) -- this is a copy of p.read being customized for 2010-2011&lt;br /&gt;
    local parent=frame.getParent(frame) or {}&lt;br /&gt;
    local currentpage, from, to&lt;br /&gt;
    ---- args in the #invoke itself trump args in the parent frame&lt;br /&gt;
    currentpage = (parent and parent.args.page) or frame.args.page&lt;br /&gt;
    from = (parent and parent.args.from) or frame.args.from or 1&lt;br /&gt;
    to = (parent and parent.args.to) or frame.args.to or 9999&lt;br /&gt;
    from, to = tonumber(from), tonumber(to) -- they get passed in as strings!&lt;br /&gt;
    -- from and to are kludges to get part of the data when I start getting too much expanded template errors&lt;br /&gt;
    -- I'm not sure getting the current page makes sense but I had the code handy so I'll leave it.&lt;br /&gt;
    local pagepointer&lt;br /&gt;
    if not(currentpage) then&lt;br /&gt;
        pagepointer=mw.title.getCurrentTitle()&lt;br /&gt;
        assert(pagepointer,&amp;quot;failed to access getCurrentTitle&amp;quot;)&lt;br /&gt;
        currentpage=pagepointer.fullText&lt;br /&gt;
    else pagepointer=mw.title.new(currentpage)&lt;br /&gt;
        assert(pagepointer,&amp;quot;failed to access mw.title.new(&amp;quot;..tostring(currentpage)..&amp;quot;)&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
    ---- get the text of the currentpage&lt;br /&gt;
    local text=pagepointer.getContent(pagepointer)&lt;br /&gt;
    assert (text,&amp;quot;error: failed to get text from &amp;quot;.. currentpage)&lt;br /&gt;
    local linkmatch = &amp;quot;(.-)%s*%*?&amp;lt;samp&amp;gt;%[%[Wikipedia:Motto of the day/(.-)%]%]%s*&amp;lt;/samp&amp;gt;%s*&amp;quot;&lt;br /&gt;
    local prowl=mw.ustring.gmatch(text,linkmatch)&lt;br /&gt;
    local archive={}&lt;br /&gt;
    local contents, link = prowl()&lt;br /&gt;
    local count = 0&lt;br /&gt;
    while link do&lt;br /&gt;
    	if (count &amp;gt;= from) and (count &amp;lt;= to) then&lt;br /&gt;
    		contents = mw.ustring.gsub(contents,&amp;quot;%s*&amp;lt;br /&amp;gt;$&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
    	    link = mw.ustring.gmatch(link,&amp;quot;(.-)%|&amp;quot;)() or link&lt;br /&gt;
            -- table.insert(archive,'[==[' .. link .. ']==],&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;')&lt;br /&gt;
            -- I don't think I actually need to include the link for this use&lt;br /&gt;
            table.insert(archive,'[==[' .. contents .. ']==],&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;')&lt;br /&gt;
        end&lt;br /&gt;
        count = count + 1&lt;br /&gt;
        contents, link=prowl()&lt;br /&gt;
    end&lt;br /&gt;
    if contents then&lt;br /&gt;
    	table.insert(archive,'[==[' .. contents .. ']==],&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;')&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local output=&amp;quot;&amp;quot;&lt;br /&gt;
    for i = 1, table.maxn(archive) do&lt;br /&gt;
        output=output..(archive[i] or &amp;quot;&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
    output = mw.ustring.gsub(output,&amp;quot;,&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;$&amp;quot;,&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;)&lt;br /&gt;
    output = &amp;quot;&amp;lt;nowiki&amp;gt;return {&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;..output..&amp;quot;}&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
    return frame.preprocess(frame,output)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.read06(frame) -- this is a copy of p.read to be run once to get the 2006 data&lt;br /&gt;
    local parent=frame.getParent(frame) or {}&lt;br /&gt;
    local currentpage, from, to&lt;br /&gt;
    ---- args in the #invoke itself trump args in the parent frame&lt;br /&gt;
    currentpage = (parent and parent.args.page) or frame.args.page&lt;br /&gt;
    from = (parent and parent.args.from) or frame.args.from or 1&lt;br /&gt;
    to = (parent and parent.args.to) or frame.args.to or 9999&lt;br /&gt;
    from, to = tonumber(from), tonumber(to) -- they get passed in as strings!&lt;br /&gt;
    -- from and to are kludges to get part of the data when I start getting too much expanded template errors&lt;br /&gt;
    -- I'm not sure getting the current page makes sense but I had the code handy so I'll leave it.&lt;br /&gt;
    local pagepointer&lt;br /&gt;
    if not(currentpage) then&lt;br /&gt;
        pagepointer=mw.title.getCurrentTitle()&lt;br /&gt;
        assert(pagepointer,&amp;quot;failed to access getCurrentTitle&amp;quot;)&lt;br /&gt;
        currentpage=pagepointer.fullText&lt;br /&gt;
    else pagepointer=mw.title.new(currentpage)&lt;br /&gt;
        assert(pagepointer,&amp;quot;failed to access mw.title.new(&amp;quot;..tostring(currentpage)..&amp;quot;)&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
    ---- get the text of the currentpage&lt;br /&gt;
    local text=pagepointer.getContent(pagepointer)&lt;br /&gt;
    assert (text,&amp;quot;error: failed to get text from &amp;quot;.. currentpage)&lt;br /&gt;
    local linkmatch = &amp;quot;(.-)%s*%*?&amp;lt;tt&amp;gt;(.-)&amp;lt;/tt&amp;gt;%s*&amp;quot;&lt;br /&gt;
    local prowl=mw.ustring.gmatch(text,linkmatch)&lt;br /&gt;
    local archive={}&lt;br /&gt;
    local contents, link = prowl()&lt;br /&gt;
    local count = 0&lt;br /&gt;
    while link do&lt;br /&gt;
    	if (count &amp;gt;= from) and (count &amp;lt;= to) then&lt;br /&gt;
    		contents = mw.ustring.gsub(contents,&amp;quot;%s*&amp;lt;br /&amp;gt;$&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
    	    link = mw.ustring.gmatch(link,&amp;quot;(.-)%|&amp;quot;)() or link&lt;br /&gt;
            -- table.insert(archive,'[==[' .. link .. ']==],&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;')&lt;br /&gt;
            -- I don't think I actually need to include the link for this use&lt;br /&gt;
            table.insert(archive,'[==[' .. contents .. ']==],&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;')&lt;br /&gt;
        end&lt;br /&gt;
        count = count + 1&lt;br /&gt;
        contents, link=prowl()&lt;br /&gt;
    end&lt;br /&gt;
    if contents then&lt;br /&gt;
    	table.insert(archive,'[==[' .. contents .. ']==],&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;')&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    local output=&amp;quot;&amp;quot;&lt;br /&gt;
    for i = 1, table.maxn(archive) do&lt;br /&gt;
        output=output..(archive[i] or &amp;quot;&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
    output = mw.ustring.gsub(output,&amp;quot;,&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;$&amp;quot;,&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;)&lt;br /&gt;
    output = &amp;quot;&amp;lt;nowiki&amp;gt;return {&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;..output..&amp;quot;}&amp;lt;/nowiki&amp;gt;&amp;quot;&lt;br /&gt;
    return frame.preprocess(frame,output)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Anomalocaris</name></author>
		
	</entry>
</feed>