Module:WeeklyEvent

From Noisebridge Wiki
Jump to navigation Jump to search

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
 -- build inline wikitext
 local out = 
 if latestTitle then
   out = out .. string.format('%s', latestTitle, latestText)
 else
   out = out .. "no recent page"
 end
 out = out .. ' · ' ..
       string.format('%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 
 return frame:extensionTag{
   name = 'span',
   content = out,
   args = { class = 'weekly-event-inline' } -- optional
 }

end

return p