Module:Weekly site information: Difference between revisions
Jump to navigation
Jump to search
Dat Hack3r (talk | contribs) m Dat Hack3r moved page Module:Weekly Briefing Release to Module:Weekly site information without leaving a redirect: This module now implements {{Weekly site information}} in its entirety, so it should take on its name. |
Dat Hack3r (talk | contribs) Refactor completely and add the ability to specify a specific release number |
||
| (2 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
local p = {} | local p = {} | ||
local | local mw_error = require('Module:Error').error | ||
local function | local first = os.time{year=2024, month=9, day=8} | ||
local diff = math.floor(os.difftime(os.time(), first) / 60 / 60 / 24 / 7) | |||
function p._release(offset, number) | |||
offset = offset or 0 | offset = offset or 0 | ||
number = (number or diff) + offset | |||
local | local end_date = os.date('*t', first) | ||
end_date.day = end_date.day + number * 7 | |||
local start_date = { | |||
year = end_date.year, | |||
month = end_date.month, | |||
day = end_date.day - 7, | |||
} | |||
return string.format('Weekly Briefing Release %d %s - %s', | |||
number, | |||
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, number) | |||
link_text = link_text or '' | |||
if number then | |||
return '[[' .. p._release(offset, number) .. '|' .. link_text .. ']]' | |||
elseif offset then | |||
return '[[' .. p._release(offset) .. '|' .. link_text .. ']]' | |||
end | |||
-- Use the following code when mw.title.newBatch() becomes available | |||
end | -- local releases = {} | ||
-- for i = 1, -diff, -1 do | |||
-- table.insert(releases, p._release(i)) | |||
-- end | |||
-- for _, release in ipairs(mw.title.newBatch(releases):lookupExistence():getTitles()) do | |||
-- if release.exists then | |||
-- return '[[' .. release.fullText .. '|' .. link_text .. ']]' | |||
-- end | |||
-- end | |||
for i = 1, -diff, -1 do | |||
release = p._release(i) | |||
mw.log(release) | |||
if mw.title.new(release).exists then | |||
return '[[' .. release .. '|' .. link_text .. ']]' | |||
end | end | ||
end | end | ||
return mw_error{'No Releases found. Something has gone very, very wrong.'} | |||
end | end | ||
function p.main(frame) | function p.main(frame) | ||
local link_text = frame:getParent().args[1] or 'Weekly Site Information' | |||
local link_text = frame:getParent().args[1] or | |||
local offset = tonumber(frame:getParent().args['offset']) | local offset = tonumber(frame:getParent().args['offset']) | ||
return p._main(link_text, offset) | local number = tonumber(frame:getParent().args['number']) | ||
return p._main(link_text, offset, number) | |||
end | end | ||
return p | return p | ||
Latest revision as of 02:22, 1 February 2026
| 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 = os.time{year=2024, month=9, day=8}
local diff = math.floor(os.difftime(os.time(), first) / 60 / 60 / 24 / 7)
function p._release(offset, number)
offset = offset or 0
number = (number or diff) + offset
local end_date = os.date('*t', first)
end_date.day = end_date.day + number * 7
local start_date = {
year = end_date.year,
month = end_date.month,
day = end_date.day - 7,
}
return string.format('Weekly Briefing Release %d %s - %s',
number,
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, number)
link_text = link_text or ''
if number then
return '[[' .. p._release(offset, number) .. '|' .. link_text .. ']]'
elseif offset then
return '[[' .. p._release(offset) .. '|' .. link_text .. ']]'
end
-- Use the following code when mw.title.newBatch() becomes available
-- local releases = {}
-- for i = 1, -diff, -1 do
-- table.insert(releases, p._release(i))
-- end
-- for _, release in ipairs(mw.title.newBatch(releases):lookupExistence():getTitles()) do
-- if release.exists then
-- return '[[' .. release.fullText .. '|' .. link_text .. ']]'
-- end
-- end
for i = 1, -diff, -1 do
release = p._release(i)
mw.log(release)
if mw.title.new(release).exists then
return '[[' .. release .. '|' .. link_text .. ']]'
end
end
return mw_error{'No Releases found. Something has gone very, very wrong.'}
end
function p.main(frame)
local link_text = frame:getParent().args[1] or 'Weekly Site Information'
local offset = tonumber(frame:getParent().args['offset'])
local number = tonumber(frame:getParent().args['number'])
return p._main(link_text, offset, number)
end
return p