Ghostbusters Wiki


5,162pages on
this wiki
Add New Page
-- This module powers {{countdown}}.
local p = {}
-- Constants
local lang = mw.language.getContentLanguage()
local getArgs = require('Module:Arguments').getArgs
local function formatMessage(secondsLeft, event, color, refreshLink)
	local timeLeft = lang:formatDuration(secondsLeft, {'years', 'weeks', 'days', 'hours', 'minutes', 'seconds'})
	-- Find whether we are plural or not.
	local isOrAre
	if string.match(timeLeft, '^%d+') == '1' then
		isOrAre = 'is'
		isOrAre = 'are'
	-- Color and bold the numbers, because it makes them look important.
	local timeLeft = string.gsub(timeLeft, '(%d+)', '<span style="color: ' .. (color or '#F00') .. '; font-weight: bold;">%1</span>')
	-- Make the refresh link and join it all together.
	return string.format('There %s %s until %s.%s', isOrAre, timeLeft, event, refreshLink)
function p.main(frame)
	local args = getArgs(frame)
	if not (args.year and args.month and then
		return  '<strong class="error">Error: year, month, and day must be specified</strong>'
	local eventTime = os.time({year=args.year, month=args.month,, hour=args.hour, min=args.minute, sec=args.second})
	local timeToStart = os.difftime(eventTime, os.time()) -- (future time - current time)
	local refreshLink = mw.title.getCurrentTitle():fullUrl({action = 'purge'})
	refreshLink = string.format(' <small><span class="plainlinks">([%s refresh])</span></small>', refreshLink)
	if timeToStart > 0 then
		-- Event has not begun yet
		return formatMessage(timeToStart, args.event or 'the event begins', args.color, refreshLink)
	elseif args.duration then
		local timeToEnd
		if args['duration unit'] then
			-- Duration is in unit other than seconds, use formatDate to add
			timeToEnd = tonumber(lang:formatDate('U', '@' .. tostring(timeToStart) .. ' +' .. tostring(args.duration) .. ' ' .. args['duration unit']))
			timeToEnd = timeToStart + tonumber(args.duration)
		if timeToEnd > 0 then
			-- Event is in progress
			return args.eventstart .. refreshLink or formatMessage(timeToEnd, (args.event or 'the event') .. ' ends', args.color, refreshLink)
			-- Event had a duration and has now ended
			return (args.eventend or ((lang:ucfirst(args.event or 'The event')) .. ' has ended.')) .. refreshLink
		-- Event had no duration and has begun
		return (args.eventstart or ((lang:ucfirst(args.event or 'The event')) .. ' has started.')) .. refreshLink
return p

Ad blocker interference detected!

Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

Also on Fandom

Random Wiki