Module:WeeklyEvent: Difference between revisions
Jump to navigation
Jump to search
m local args handling |
m update for space handling |
||
| Line 2: | Line 2: | ||
local function d(fmt, rel) | local function d(fmt, rel) | ||
return mw.getContentLanguage():formatDate(fmt, rel) | return mw.getContentLanguage():formatDate(fmt, rel) | ||
end | end | ||
local function | local function exists(t) | ||
local | local title = mw.title.new(t) | ||
return | return title and title.exists | ||
end | end | ||
function p.links(frame) | function p.links(frame) | ||
local args = frame:getParent().args | local args = frame:getParent().args | ||
local prefix | local prefix = args.prefix or 'Meeting Notes' | ||
local joiner | local joiner = args.joiner or ' ' | ||
local weekday = args.weekday or 'Tuesday' | local weekday = args.weekday or 'Tuesday' | ||
local | local t_this = args.text_this or 'This week' | ||
local | local t_prev = args.text_prev or 'Last week' | ||
local | local t_next = args.text_next or 'Next week' | ||
local preload | local preload = args.preload | ||
local thisdate = d('Y | local thisdate = d('Y m d', 'this ' .. weekday) | ||
local prevdate = d('Y | local prevdate = d('Y m d', 'last ' .. weekday) | ||
local nextdate = d('Y | local nextdate = d('Y m d', 'next ' .. weekday) | ||
local thisTitle = prefix | local thisTitle = table.concat({prefix, thisdate}, joiner) | ||
local prevTitle = prefix | local prevTitle = table.concat({prefix, prevdate}, joiner) | ||
local nextTitle = prefix | local nextTitle = table.concat({prefix, nextdate}, joiner) | ||
local latestTitle, latestText | local latestTitle, latestText | ||
if | if exists(thisTitle) then | ||
latestTitle, latestText = thisTitle, | latestTitle, latestText = thisTitle, t_this | ||
elseif | elseif exists(prevTitle) then | ||
latestTitle, latestText = prevTitle, | latestTitle, latestText = prevTitle, t_prev | ||
end | end | ||
local | local out = {} | ||
if latestTitle then | if latestTitle then | ||
table.insert( | table.insert(out, string.format('[[%s|%s]]', latestTitle, latestText)) | ||
else | else | ||
table.insert( | table.insert(out, "''no recent page''") | ||
end | end | ||
table.insert( | table.insert(out, ' · ') | ||
table.insert( | table.insert(out, string.format('[[%s|%s]]', nextTitle, t_next)) | ||
if preload then | if preload then | ||
local url = mw.uri.canonicalUrl(nextTitle, { action='edit', preload=preload }) | local url = mw.uri.canonicalUrl(nextTitle, { action='edit', preload=preload }) | ||
table.insert( | table.insert(out, ' · ') | ||
table.insert( | table.insert(out, string.format('[%s create next]', tostring(url))) | ||
end | end | ||
return table.concat( | return table.concat(out) | ||
end | end | ||
return p | return p | ||
Revision as of 15:52, 22 October 2025
https://dev.fandom.com/wiki/Lua_reference_manual/Scribunto_libraries
https://en.wikipedia.org/wiki/Wikipedia:Comparable_Lua_functions_to_wikitext
local p = {}
local function d(fmt, rel)
return mw.getContentLanguage():formatDate(fmt, rel)
end
local function exists(t)
local title = mw.title.new(t)
return title and title.exists
end
function p.links(frame)
local args = frame:getParent().args
local prefix = args.prefix or 'Meeting Notes'
local joiner = args.joiner or ' '
local weekday = args.weekday or 'Tuesday'
local t_this = args.text_this or 'This week'
local t_prev = args.text_prev or 'Last week'
local t_next = args.text_next or 'Next week'
local preload = args.preload
local thisdate = d('Y m d', 'this ' .. weekday)
local prevdate = d('Y m d', 'last ' .. weekday)
local nextdate = d('Y m d', 'next ' .. weekday)
local thisTitle = table.concat({prefix, thisdate}, joiner)
local prevTitle = table.concat({prefix, prevdate}, joiner)
local nextTitle = table.concat({prefix, nextdate}, joiner)
local latestTitle, latestText
if exists(thisTitle) then
latestTitle, latestText = thisTitle, t_this
elseif exists(prevTitle) then
latestTitle, latestText = prevTitle, t_prev
end
local out = {}
if latestTitle then
table.insert(out, string.format('[[%s|%s]]', latestTitle, latestText))
else
table.insert(out, "''no recent page''")
end
table.insert(out, ' · ')
table.insert(out, string.format('[[%s|%s]]', nextTitle, t_next))
if preload then
local url = mw.uri.canonicalUrl(nextTitle, { action='edit', preload=preload })
table.insert(out, ' · ')
table.insert(out, string.format('[%s create next]', tostring(url)))
end
return table.concat(out)
end
return p