Module:Weekly site information: Difference between revisions
Jump to navigation
Jump to search
Dat Hack3r (talk | contribs) (Removed padding from date numbers (i.e., Dec 1 instead of Dec 01) and added error handling.) |
Dat Hack3r (talk | contribs) (Can now return the title of a Release given its release number; for use in other modules.) |
||
Line 7: | Line 7: | ||
local diff = os.difftime(curr_date, first_date) / (24 * 60 * 60) | local diff = os.difftime(curr_date, first_date) / (24 * 60 * 60) | ||
function p._release(offset, release_num) | |||
offset = offset or 0 | offset = offset or 0 | ||
if release_num then | |||
offset = release_num - math.floor(diff / 7) | |||
end | |||
release_num = release_num or (math.floor(diff / 7) + offset) | |||
local end_date = os.date("*t", curr_date - (diff % 7) * 24 * 60 * 60) | local end_date = os.date("*t", curr_date - (diff % 7) * 24 * 60 * 60) | ||
Line 26: | Line 30: | ||
function p._main(link_text, offset) | function p._main(link_text, offset) | ||
if offset then | if offset then | ||
return "[[" .. | return "[[" .. p._release(offset) .. "|" .. link_text .. "]]" | ||
else | else | ||
for i=1,-math.floor(diff / 7),-1 do | for i=1,-math.floor(diff / 7),-1 do | ||
mw.log( | mw.log(p._release(i)) | ||
if mw.title.new( | if mw.title.new(p._release(i), "").exists then | ||
return "[[" .. | return "[[" .. p._release(i) .. "|" .. link_text .. "]]" | ||
end | end | ||
end | end |
Latest revision as of 11:24, 16 December 2024
This Lua module is a high priority for maintenance as it is original to the OWOT Wiki and used in articles. As such, this module may contain bugs and it should be a top priority of module maintainers to quickly fix any issues that arise with it. Discuss breaking changes on the talk page before implementing them. |
This module implements {{Weekly site information}}
.
local p = {}
local mw_error = require('Module:Error').error
local first_date = os.time{year=2024, month=9, day=8}
local curr_date = os.time()
local diff = os.difftime(curr_date, first_date) / (24 * 60 * 60)
function p._release(offset, release_num)
offset = offset or 0
if release_num then
offset = release_num - math.floor(diff / 7)
end
release_num = release_num or (math.floor(diff / 7) + offset)
local end_date = os.date("*t", curr_date - (diff % 7) * 24 * 60 * 60)
end_date.day = end_date.day - (end_date.wday - 1) + offset * 7
local start_date = os.date("*t", os.time{year=end_date.year, month=end_date.month, day=end_date.day - 7})
return string.format("Weekly Briefing Release %d %s - %s",
release_num,
os.date("%b %d", os.time(start_date)):gsub(" 0", " "),
os.date("%b %d", os.time(end_date)):gsub(" 0", " ")
)
end
function p._main(link_text, offset)
if offset then
return "[[" .. p._release(offset) .. "|" .. link_text .. "]]"
else
for i=1,-math.floor(diff / 7),-1 do
mw.log(p._release(i))
if mw.title.new(p._release(i), "").exists then
return "[[" .. p._release(i) .. "|" .. link_text .. "]]"
end
end
return mw_error{"No Releases found. Something has gone very, very wrong."}
end
end
function p.main(frame)
local link_text = frame:getParent().args[1] or "Weekly Site Information"
local offset = tonumber(frame:getParent().args['offset'])
return p._main(link_text, offset)
end
return p