Module:Countdown

local p = {}

local getArgs

function p.create(frame) if not getArgs then getArgs = require('Module:Arguments').getArgs end return p._create(getArgs(frame)) end

function p._create(args) local date = args.date or '' if date == '' then return '' end

local wrapper = mw.html.create('span') :addClass('timer-object')

if args.rawcountdown then wrapper:addClass('timer-object-countdown-only') end if args.rawdatetime then wrapper:addClass('timer-object-datetime-only') end if args.finished and args.finished == 'true' then wrapper:attr('data-finished', 'finished') end

-- Timestamp wrapper:attr('data-timestamp', p.getTimestamp(date))

-- Streams if args.afreeca or args.afreecatv then wrapper:attr('data-stream-afreecatv', ((args.afreecatv or ) ~= ) and args.afreecatv or args.afreeca) end if args.dailymotion then wrapper:attr('data-stream-dailymotion', args.dailymotion) end if args.bilibili then wrapper:attr('data-stream-bilibili', args.bilibili) end if args.huya then wrapper:attr('data-stream-huya', args.huya) end if args.cc163 then wrapper:attr('data-stream-cc163', args.cc163) end if args.douyu then wrapper:attr('data-stream-douyu', args.douyu) end if args.facebook then wrapper:attr('data-stream-facebook', args.facebook) end if args.huomao then wrapper:attr('data-stream-huomao', args.huomao) end if args.loco then wrapper:attr('data-stream-loco', args.loco) end if args.mildom then wrapper:attr('data-stream-mildom', args.mildom) end if args.nimo then wrapper:attr('data-stream-nimo', args.nimo) end if args.pandatv then wrapper:attr('data-stream-pandatv', args.pandatv) end if args.play2live then wrapper:attr('data-stream-play2live', args.play2live) end if args.smashcast then wrapper:attr('data-stream-smashcast', args.smashcast) end if args.stream then wrapper:attr('data-stream-tl', args.stream) end if args.twitch then wrapper:attr('data-stream-twitch', args.twitch) end if args.twitch2 then wrapper:attr('data-stream-twitch2', args.twitch2) end if args.trovo then wrapper:attr('data-stream-trovo', args.trovo) end if args.youtube then wrapper:attr('data-stream-youtube', args.youtube) end if args.text then wrapper:attr('data-countdown-end-text', args.text) end if args.separator then wrapper:attr('data-separator', args.separator) end

wrapper:wikitext(date)

return tostring(wrapper:done) end

function p.getTimestamp(date) local datetime = string.gsub(mw.text.trim(mw.text.split(date, '<')[1]), '-', '') local tzpart = mw.text.split(date, 'tz="')[2]	if(tzpart == nil) then		return 'error'	end	local timezone = mw.text.trim(mw.text.split(tzpart, '"')[1]) local lang = mw.language.getContentLanguage local success, formattedDate = pcall(lang.formatDate, lang, 'U', datetime .. timezone) if success then return formattedDate else return 'error' end end

return p