Module:WeeklyEvent: Difference between revisions
Jump to navigation
Jump to search
update for "next" to properly reflect "cur"rent week Tag: Reverted |
remove next & s/this/next/ |
||
| (4 intermediate revisions by the same user not shown) | |||
| Line 3: | Line 3: | ||
local function d(fmt, rel) | local function d(fmt, rel) | ||
return mw.getContentLanguage():formatDate(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 | end | ||
function p.links(frame) | function p.links(frame) | ||
local 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 t_next = args.text_next or 'Next week' -- 'This week' | |||
local t_prev = args.text_prev or 'Last week' | |||
local | |||
local | |||
local preload = args.preload | local preload = args.preload | ||
local nextdate = d('Y m d', 'this ' .. weekday) -- 'this ' arg expected & needed | |||
local prevdate = d('Y m d', 'last ' .. weekday) | local prevdate = d('Y m d', 'last ' .. weekday) | ||
local nextTitle = table.concat({prefix, nextdate}, joiner) | |||
local prevTitle = table.concat({prefix, prevdate}, joiner) | local prevTitle = table.concat({prefix, prevdate}, joiner) | ||
local | local latestTitle, latestText | ||
--if exists(thisTitle) then | |||
-- latestTitle, latestText = thisTitle, t_next | |||
-- elseif | |||
if exists(prevTitle) then | |||
latestTitle, latestText = prevTitle, t_prev | |||
end | |||
-- build inline wikitext | |||
local out = '' | |||
if latestTitle then | |||
out = out .. string.format('[[%s|%s]]', latestTitle, latestText) | |||
else | |||
out = out .. "''no recent page''" | |||
end | end | ||
out = out .. ' · ' .. | |||
string.format('[[%s|%s]]', nextTitle, t_next) | |||
if preload then | |||
if preload | local url = mw.uri.canonicalUrl(nextTitle, { action='edit', preload=preload }) | ||
local url = mw.uri.canonicalUrl( | out = out .. ' · ' .. | ||
string.format('[%s create next]', tostring(url)) | |||
end | end | ||
--[[ | |||
return frame:preprocess(out) | |||
]] | |||
-- no leading/trailing whitespace | |||
out = mw.text.trim(out) | |||
-- force inline rendering; content is parsed as wikitext inside a <span> | |||
return frame:extensionTag{ | return frame:extensionTag{ | ||
name = 'span', | name = 'span', | ||
content = out, | content = out, | ||
args = { class = 'weekly-event-inline' } | args = { class = 'weekly-event-inline' } -- optional | ||
} | } | ||
end | end | ||
return p | return p | ||
Latest revision as of 18:40, 23 February 2026
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_next = args.text_next or 'Next week' -- 'This week'
local t_prev = args.text_prev or 'Last week'
local preload = args.preload
local nextdate = d('Y m d', 'this ' .. weekday) -- 'this ' arg expected & needed
local prevdate = d('Y m d', 'last ' .. weekday)
local nextTitle = table.concat({prefix, nextdate}, joiner)
local prevTitle = table.concat({prefix, prevdate}, joiner)
local latestTitle, latestText
--if exists(thisTitle) then
-- latestTitle, latestText = thisTitle, t_next
-- elseif
if exists(prevTitle) then
latestTitle, latestText = prevTitle, t_prev
end
-- build inline wikitext
local out = ''
if latestTitle then
out = out .. string.format('[[%s|%s]]', latestTitle, latestText)
else
out = out .. "''no recent page''"
end
out = out .. ' · ' ..
string.format('[[%s|%s]]', nextTitle, t_next)
if preload then
local url = mw.uri.canonicalUrl(nextTitle, { action='edit', preload=preload })
out = out .. ' · ' ..
string.format('[%s create next]', tostring(url))
end
--[[
return frame:preprocess(out)
]]
-- no leading/trailing whitespace
out = mw.text.trim(out)
-- force inline rendering; content is parsed as wikitext inside a <span>
return frame:extensionTag{
name = 'span',
content = out,
args = { class = 'weekly-event-inline' } -- optional
}
end
return p