<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mywikibiz.com/index.php?action=history&amp;feed=atom&amp;title=Module%3ACFB_schedule</id>
	<title>Module:CFB schedule - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mywikibiz.com/index.php?action=history&amp;feed=atom&amp;title=Module%3ACFB_schedule"/>
	<link rel="alternate" type="text/html" href="https://mywikibiz.com/index.php?title=Module:CFB_schedule&amp;action=history"/>
	<updated>2026-07-28T17:58:02Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.3</generator>
	<entry>
		<id>https://mywikibiz.com/index.php?title=Module:CFB_schedule&amp;diff=471146&amp;oldid=prev</id>
		<title>Zoran: Pywikibot 6.4.0</title>
		<link rel="alternate" type="text/html" href="https://mywikibiz.com/index.php?title=Module:CFB_schedule&amp;diff=471146&amp;oldid=prev"/>
		<updated>2021-07-15T20:52:25Z</updated>

		<summary type="html">&lt;p&gt;Pywikibot 6.4.0&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This module implements {{CFB schedule}}&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local dagger = '&amp;lt;sup class=&amp;quot;CFB-schedule-hcgame&amp;quot;&amp;gt;[[File:Dagger-14-plain.png|alt=dagger|link=]]&amp;lt;/sup&amp;gt;'&lt;br /&gt;
&lt;br /&gt;
local haslocgamename = false&lt;br /&gt;
local hasoppgamename = false&lt;br /&gt;
local haslocrivalry = false&lt;br /&gt;
local hasopprivalry = false&lt;br /&gt;
local hasrank = false&lt;br /&gt;
local hasstrangescore = false&lt;br /&gt;
local hasnowrap = false&lt;br /&gt;
&lt;br /&gt;
local function isnotempty(s)&lt;br /&gt;
	return s and s:match( '^%s*(.-)%s*$' ) ~= ''&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function yesno(s, d)&lt;br /&gt;
	s = (s or ''):lower()&lt;br /&gt;
	if (s == 'no' or s == 'n') then&lt;br /&gt;
		return false&lt;br /&gt;
	elseif (s == 'yes' or s == 'y') then&lt;br /&gt;
		return true&lt;br /&gt;
	else&lt;br /&gt;
		return d&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function ifexist(page)&lt;br /&gt;
	if not page then return false end&lt;br /&gt;
	if mw.title.new(page).exists then return true end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getdivision(y)&lt;br /&gt;
	if y &amp;gt;= 2006 then&lt;br /&gt;
		return 'NCAA Division I FBS'&lt;br /&gt;
	elseif y &amp;gt;= 1978 then&lt;br /&gt;
		return 'NCAA Division I-A'&lt;br /&gt;
	elseif y &amp;gt;= 1973 then&lt;br /&gt;
		return 'NCAA Division I'&lt;br /&gt;
	elseif y &amp;gt;= 1956 then&lt;br /&gt;
		return 'NCAA University Division'&lt;br /&gt;
	elseif y &amp;gt;= 1910 then&lt;br /&gt;
		return 'NCAA'&lt;br /&gt;
	elseif y &amp;gt;= 1906 then&lt;br /&gt;
		return 'Intercollegiate Athletic Association of the United States'&lt;br /&gt;
	else&lt;br /&gt;
		return 'college'&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return ''&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getpolltext(y, d, p)&lt;br /&gt;
	-- default poll is the Coaches poll&lt;br /&gt;
	if (p or '') == '' then&lt;br /&gt;
		p = 'Coaches\''&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- if p is linked then just return p&lt;br /&gt;
	if (p or ''):find('[%[%]]') then&lt;br /&gt;
		return p&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- else if y is a number&lt;br /&gt;
	if isnotempty(y) and tonumber(y) then&lt;br /&gt;
		if (d or '') == '' then&lt;br /&gt;
			d = getdivision(tonumber(y))&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		return '[[' .. y .. ' ' .. d .. ' football rankings'&lt;br /&gt;
					.. '#' .. p .. ' Poll|' .. p .. ' Poll]]'&lt;br /&gt;
					.. ' released prior to the game'&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- else if d is not empty&lt;br /&gt;
	if isnotempty(d) then&lt;br /&gt;
		d = d .. ' '&lt;br /&gt;
&lt;br /&gt;
		if ifexist(d .. p .. ' Poll') then&lt;br /&gt;
			return '[[' .. d .. p .. ' Poll|' .. p .. ' Poll]]'&lt;br /&gt;
				.. ' released prior to the game'&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- else if p Poll is an article&lt;br /&gt;
	if ifexist(p .. ' Poll') then&lt;br /&gt;
		return (d or '') .. '[[' .. p .. ' Poll]]'&lt;br /&gt;
			.. ' released prior to the game'&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return (d or '') .. p .. ' poll released prior to the game'&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getopp(s, atvs, movegn)&lt;br /&gt;
	s = mw.ustring.gsub(s, '&amp;lt;[%s/]*[Nn][Cc][Gg][%s/]*&amp;gt;', '&amp;lt;span class=&amp;quot;CFB-schedule-ncgame&amp;quot;&amp;gt;*&amp;lt;/span&amp;gt;')&lt;br /&gt;
	s = mw.ustring.gsub(s, '&amp;lt;[%s/]*[Hh][Cc][%s/]*&amp;gt;', dagger)&lt;br /&gt;
	atvs = mw.ustring.gsub(atvs or '', '^%s*@%s*', 'at')&lt;br /&gt;
	atvs = mw.ustring.gsub(atvs or '', '^%s*[Vv][Ss]?[%.%s]*', 'vs.')&lt;br /&gt;
	s = mw.ustring.gsub(s, '^([A-Za-z%.%s]*)[Nn][Oo][%.%s]*([0-9])', '%1 No.&amp;amp;nbsp;%2' )&lt;br /&gt;
	s = mw.ustring.gsub(s, '^([A-Za-z%.%s]*)#([0-9])', '%1 No.&amp;amp;nbsp;%2')&lt;br /&gt;
	if mw.ustring.match(s, 'No%.&amp;amp;nbsp;%d') then hasrank=true end&lt;br /&gt;
	local gn, r = '', ''&lt;br /&gt;
	if mw.ustring.match(s, '[Nn][Oo][Ww][Rr][Aa][Pp]') then&lt;br /&gt;
		hasnowrap = true&lt;br /&gt;
	end&lt;br /&gt;
	if mw.ustring.match(s, '[Nn][Bb][Ss][Pp]') then&lt;br /&gt;
		hasnowrap = true&lt;br /&gt;
	end&lt;br /&gt;
	if mw.ustring.match(s, '^.*%s*%(%s*%[%[[^%[%]]*%]%]%s*%)%s*.*$') then&lt;br /&gt;
		if mw.ustring.match(s, '%(%[%[[^%[%]]*%|%s*[Rr]ivalry') then&lt;br /&gt;
			hasopprivalry = true&lt;br /&gt;
		else&lt;br /&gt;
			hasoppgamename = true&lt;br /&gt;
		end&lt;br /&gt;
		if movegn == true then&lt;br /&gt;
			s, gn, r = mw.ustring.match(s, '^(.*)%s*%(%s*(%[%[[^%[%]]*%]%])%s*%)(%s*.*)$')&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if atvs ~= '' then atvs = atvs .. ' ' end&lt;br /&gt;
	return atvs .. s .. r, gn&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getrank(s)&lt;br /&gt;
	s = mw.ustring.gsub(s, '^%s*([%d][%d]*)', 'No.&amp;amp;nbsp;%1')&lt;br /&gt;
	return s&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getsite(s, l, gn)&lt;br /&gt;
	if isnotempty(s) and isnotempty(l) then&lt;br /&gt;
		local r = mw.html.create('div')&lt;br /&gt;
		local u = r:addClass('hlist'):tag('ul')&lt;br /&gt;
		gn = mw.ustring.gsub(gn, '^%s*', '')&lt;br /&gt;
		if isnotempty(gn) then&lt;br /&gt;
			gn = mw.ustring.gsub(gn, '^([Rr][Ii][Vv][Aa][Ll][Rr][Yy])$', '%1[[Category:Pages using CFB schedule with an unlinked rivalry]]')&lt;br /&gt;
			gn = mw.ustring.gsub(gn, '^([^%[%]]*)$', '%1[[Category:Pages using CFB schedule with an unlinked gamename]]')&lt;br /&gt;
			gn = ' (' .. gn .. ')'&lt;br /&gt;
		end&lt;br /&gt;
		u:tag('li'):wikitext(s)&lt;br /&gt;
		u:tag('li'):wikitext(l .. gn)&lt;br /&gt;
		if mw.ustring.match(l, '%s%(%[%[') then&lt;br /&gt;
			if mw.ustring.match(l, '%s%(%[%[[^%]]*%|%s*[Rr]ivalry') then&lt;br /&gt;
				haslocrivalry = true&lt;br /&gt;
			else&lt;br /&gt;
				haslocgamename = true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return tostring(r)&lt;br /&gt;
	else&lt;br /&gt;
		gn = mw.ustring.gsub(gn, '^%s*', '')&lt;br /&gt;
		if isnotempty(gn) then&lt;br /&gt;
			gn = ' (' .. gn .. ')'&lt;br /&gt;
		end&lt;br /&gt;
		return s .. l .. gn&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function setbg(WL,N)&lt;br /&gt;
	local BG = 'inherit'&lt;br /&gt;
	WL = mw.ustring.gsub(WL, '^%s*(.-)%s*$', '%1')&lt;br /&gt;
	WL = WL:upper()&lt;br /&gt;
	if WL == 'W' then&lt;br /&gt;
		BG = '#DDFFDD'&lt;br /&gt;
	elseif WL == 'L' then&lt;br /&gt;
		BG = '#FFDDDD'&lt;br /&gt;
	elseif WL == 'T' then&lt;br /&gt;
		BG = '#FFFFE6'&lt;br /&gt;
	elseif WL == 'V' then&lt;br /&gt;
		BG = '#F0E8E8'&lt;br /&gt;
		WL = 'W'&lt;br /&gt;
		N = N .. ' (vacated)'&lt;br /&gt;
	end&lt;br /&gt;
	return BG, WL, N&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function parse4(p, s)&lt;br /&gt;
	local t = {'', '', '', ''}&lt;br /&gt;
	for k = 1,4 do&lt;br /&gt;
		t[k] = mw.ustring.gsub(s, p, '%' .. k)&lt;br /&gt;
	end&lt;br /&gt;
	local wl, sc, n, bg = t[1], t[2] .. '–' .. t[3], t[4], 'inherit'&lt;br /&gt;
	bg, wl, n = setbg(wl, n)&lt;br /&gt;
	return '&amp;lt;span style=&amp;quot;display:inline-block; font-weight:bold; width:1em&amp;quot;&amp;gt;' .. wl .. '&amp;lt;/span&amp;gt; ' .. sc .. n, bg&lt;br /&gt;
end&lt;br /&gt;
	&lt;br /&gt;
local function getresult(wl, s, n)&lt;br /&gt;
	local bg = 'inherit'&lt;br /&gt;
&lt;br /&gt;
	local loopnum = 0&lt;br /&gt;
	while (mw.ustring.match(s, '&amp;amp;[Nn][Bb][Ss][Pp];') and loopnum &amp;lt; 5) do&lt;br /&gt;
		hasstrangescore = true&lt;br /&gt;
		s = mw.ustring.gsub(s, '&amp;amp;[Nn][Bb][Ss][Pp];', ' ')&lt;br /&gt;
		s = mw.ustring.gsub(s, '&amp;lt;%s*[Ss][Pp][Aa][Nn][^&amp;lt;&amp;gt;]*&amp;gt;%s*&amp;lt;/[Ss][Pp][Aa][Nn]%s*&amp;gt;', ' ')&lt;br /&gt;
		loopnum = loopnum + 1&lt;br /&gt;
	end&lt;br /&gt;
	s = mw.ustring.gsub(s, '&amp;amp;[Nn][Bb][Ss][Pp];%s*(&amp;lt;[%s/]*[0-9]*OT[%s/]*&amp;gt;)', ' %1')&lt;br /&gt;
	s = mw.ustring.gsub(s, '%s*&amp;lt;([0-9]*)[Oo][Tt]&amp;gt;', ' &amp;lt;sup&amp;gt;%1OT&amp;lt;/sup&amp;gt;')&lt;br /&gt;
	s = mw.ustring.gsub(s, '&amp;amp;[MmNn][Dd][Aa][Ss][Hh];', '–')&lt;br /&gt;
	s = mw.ustring.gsub(s, '&amp;lt;span class=&amp;quot;url&amp;quot;&amp;gt;(.-)&amp;lt;/span&amp;gt;', '%1')&lt;br /&gt;
	s = mw.ustring.gsub(s, '^%s*(.-)%s*$', '%1')&lt;br /&gt;
&lt;br /&gt;
	if wl ~= '' then&lt;br /&gt;
		s = mw.ustring.gsub(s, '^%s*([%d][%d]*)%s*[%‐‒–—―]%s*', '%1–')&lt;br /&gt;
		s = mw.ustring.gsub(s, '^%s*(%[%[%s*[^|]*|%s*[%d][%d]*)%s*[%‐‒–—―]%s*', '%1–')&lt;br /&gt;
		s = mw.ustring.gsub(s, '^%s*(%[[^|%[%]%s]*%s+[%d][%d]*)%s*[%‐‒–—―]%s*', '%1–')&lt;br /&gt;
		local r&lt;br /&gt;
		if mw.ustring.match(wl, '^%s*[%a]?%s*$') then&lt;br /&gt;
			bg, wl, n = setbg(wl, n)&lt;br /&gt;
			r = '&amp;lt;span style=&amp;quot;display:inline-block; font-weight:bold; width:1em&amp;quot;&amp;gt;' &lt;br /&gt;
				.. wl .. '&amp;lt;/span&amp;gt; ' .. s .. n&lt;br /&gt;
		else&lt;br /&gt;
			hasstrangescore = true&lt;br /&gt;
			r = wl .. s .. n&lt;br /&gt;
		end&lt;br /&gt;
		return r,bg&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if s == 'Cancelled' or s == '' or s == '?' then&lt;br /&gt;
		return wl .. s .. n, 'inherit'&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if mw.ustring.match(s, '^[%a]%s+[^%d].*$') then&lt;br /&gt;
		wl = mw.ustring.gsub(s, '^([%a])%s+(.-)$', '%1')&lt;br /&gt;
		s = mw.ustring.gsub(s, '^([%a])%s+(.-)$', '%2')&lt;br /&gt;
		bg, wl, n = setbg(wl, n)&lt;br /&gt;
		local r = '&amp;lt;span style=&amp;quot;display:inline-block; font-weight:bold; width:1em&amp;quot;&amp;gt;'&lt;br /&gt;
			.. wl .. '&amp;lt;/span&amp;gt; ' .. s .. n&lt;br /&gt;
		return r,bg&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if mw.ustring.match(s, '^[%a]$') then&lt;br /&gt;
		bg, wl, n = setbg(s, n)&lt;br /&gt;
		local r = '&amp;lt;span style=&amp;quot;display:inline-block; font-weight:bold; width:1em&amp;quot;&amp;gt;'&lt;br /&gt;
			.. wl .. '&amp;lt;/span&amp;gt; ' .. n&lt;br /&gt;
		return r, bg&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local pat&lt;br /&gt;
	pat = '^([%a])%s*([%d][%d]*)[%D]%s*([%d][%d]*)(.-)$'&lt;br /&gt;
	if mw.ustring.match(s, pat) then&lt;br /&gt;
		return parse4(pat, s)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	pat = '^([%a])%s*(%[%[%s*[^|]*|%s*[%d][%d]*)[%D]%s*([%d][%d]*%]%])(.-)$'&lt;br /&gt;
	if mw.ustring.match(s, pat) then&lt;br /&gt;
		return parse4(pat, s)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	pat = '^([%a])%s*(%[[^|%[%]%s]*%s+[%d][%d]*)[%D]%s*([%d][%d]*%s*%])(.-)$'&lt;br /&gt;
	if mw.ustring.match(s, pat) then&lt;br /&gt;
		return parse4(pat, s)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	hasstrangescore = true&lt;br /&gt;
&lt;br /&gt;
	return wl .. s .. n, 'inherit'&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getfootnotes(ncg, hc, oe, rank, opprank, poll, tz, src)&lt;br /&gt;
	-- footnotes&lt;br /&gt;
	local fn = {}&lt;br /&gt;
	if ncg then&lt;br /&gt;
		table.insert(fn,'*Non-conference game')&lt;br /&gt;
	end&lt;br /&gt;
	if hc then&lt;br /&gt;
		table.insert(fn, dagger .. 'Homecoming')&lt;br /&gt;
	end&lt;br /&gt;
	if isnotempty(oe)  then&lt;br /&gt;
		table.insert(fn, oe)&lt;br /&gt;
	end&lt;br /&gt;
	if (rank == true) or (opprank == true) then&lt;br /&gt;
		table.insert(fn, 'Rankings from ' .. poll)&lt;br /&gt;
	end&lt;br /&gt;
	if isnotempty(tz) then&lt;br /&gt;
		table.insert(fn,'All times are in [[' .. tz .. ' Time Zone|' .. tz .. ' time]]')&lt;br /&gt;
	end&lt;br /&gt;
	if isnotempty(src) then&lt;br /&gt;
		table.insert(fn, 'Source: ' .. src)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if (#fn &amp;gt; 0) then&lt;br /&gt;
		local res = mw.html.create('div')&lt;br /&gt;
				:addClass('hlist')&lt;br /&gt;
				:tag('ul')&lt;br /&gt;
					:wikitext('&amp;lt;li&amp;gt;' .. table.concat(fn,'&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;') .. '&amp;lt;/li&amp;gt;')&lt;br /&gt;
					:done()&lt;br /&gt;
		return tostring(res)&lt;br /&gt;
	else&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function make_outer_table(args)&lt;br /&gt;
	local showdate   = yesno(args['date'], false)&lt;br /&gt;
	local showtime   = yesno(args['time'], false)&lt;br /&gt;
	local showrank   = yesno(args['rank'], false)&lt;br /&gt;
	local showtv     = yesno(args['tv'], false)&lt;br /&gt;
	local showattend = yesno(args['attend'], false)&lt;br /&gt;
	local showsource = yesno(args['source'], false)&lt;br /&gt;
	local ncg, hc = false, false&lt;br /&gt;
	local row&lt;br /&gt;
&lt;br /&gt;
	-- Step 1: Inspect the rows to determine which headers are active&lt;br /&gt;
	local k = 1&lt;br /&gt;
	while args[k] ~= nil do&lt;br /&gt;
		if showdate == false then&lt;br /&gt;
			if args[k]:find('&amp;lt;td[^&amp;gt;]*CFB%-schedule%-date[^&amp;gt;]*&amp;gt;%s*[^%s&amp;lt;]') then&lt;br /&gt;
				showdate = true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if showtime == false then&lt;br /&gt;
			if args[k]:find('&amp;lt;td[^&amp;gt;]*CFB%-schedule%-time[^&amp;gt;]*&amp;gt;%s*[^%s&amp;lt;]') then&lt;br /&gt;
				showtime = true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if showrank == false then&lt;br /&gt;
			if args[k]:find('&amp;lt;td[^&amp;gt;]*CFB%-schedule%-rank[^&amp;gt;]*&amp;gt;%s*[^%s&amp;lt;]') then&lt;br /&gt;
				showrank = true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if showtv == false then&lt;br /&gt;
			if args[k]:find('&amp;lt;td[^&amp;gt;]*CFB%-schedule%-tv[^&amp;gt;]*&amp;gt;%s*[^%s&amp;lt;]') then&lt;br /&gt;
				showtv = true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if showattend == false then&lt;br /&gt;
			if args[k]:find('&amp;lt;td[^&amp;gt;]*CFB%-schedule%-attend[^&amp;gt;]*&amp;gt;%s*[^%s&amp;lt;]') then&lt;br /&gt;
				showattend = true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if showsource == false then&lt;br /&gt;
			if args[k]:find('&amp;lt;td[^&amp;gt;]*CFB%-schedule%-source[^&amp;gt;]*&amp;gt;%s*[^%s&amp;lt;]') then&lt;br /&gt;
				showsource = true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if ncg == false then&lt;br /&gt;
			if args[k]:find('&amp;lt;s[pu][ap][^&amp;gt;]*CFB%-schedule%-ncgame') then&lt;br /&gt;
				ncg = true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if hc == false then&lt;br /&gt;
			if args[k]:find('&amp;lt;s[pu][ap][^&amp;gt;]*CFB%-schedule%-hcgame') then&lt;br /&gt;
				hc = true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if hasrank == false then&lt;br /&gt;
			if showrank == true or args[k]:find('No%.&amp;amp;nbsp;%d') then&lt;br /&gt;
				hasrank = true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		k = k + 1&lt;br /&gt;
	end&lt;br /&gt;
	if k == 1 then&lt;br /&gt;
		return '[[Category:Pages using CFB schedule with no content]]'&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Step 2: Build the table&lt;br /&gt;
	local root = mw.html.create('table')&lt;br /&gt;
	root:addClass('wikitable')&lt;br /&gt;
		:css('font-size', '95%')&lt;br /&gt;
&lt;br /&gt;
	-- optional caption&lt;br /&gt;
	if args['caption'] then&lt;br /&gt;
		root:tag('caption'):wikitext(args['caption'])&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- add the headers&lt;br /&gt;
	local cols = 3&lt;br /&gt;
	row = root:tag('tr')&lt;br /&gt;
	if showdate then&lt;br /&gt;
		row:tag('th'):wikitext('Date')&lt;br /&gt;
		cols = cols + 1&lt;br /&gt;
	end&lt;br /&gt;
	if showtime then&lt;br /&gt;
		row:tag('th'):wikitext('Time')&lt;br /&gt;
		cols = cols + 1&lt;br /&gt;
	end&lt;br /&gt;
	row:tag('th'):wikitext('Opponent')&lt;br /&gt;
	if showrank then&lt;br /&gt;
		row:tag('th'):wikitext('Rank')&lt;br /&gt;
		cols = cols + 1&lt;br /&gt;
	end&lt;br /&gt;
	row:tag('th'):wikitext('Site')&lt;br /&gt;
	if showtv then&lt;br /&gt;
		row:tag('th'):wikitext('TV')&lt;br /&gt;
		cols = cols + 1&lt;br /&gt;
	end&lt;br /&gt;
	row:tag('th'):wikitext('Result')&lt;br /&gt;
	if showattend then&lt;br /&gt;
		row:tag('th'):wikitext('Attendance')&lt;br /&gt;
		cols = cols + 1&lt;br /&gt;
	end&lt;br /&gt;
	if showsource then&lt;br /&gt;
		row:tag('th'):wikitext('Source')&lt;br /&gt;
		cols = cols + 1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	k = 1&lt;br /&gt;
	while args[k] ~= nil do&lt;br /&gt;
		row = args[k] or ''&lt;br /&gt;
		if showdate then&lt;br /&gt;
			row = mw.ustring.gsub(row, '&amp;lt;td[^&amp;gt;]*CFB%-schedule%-date[^&amp;gt;]*&amp;gt;', '&amp;lt;td style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;')&lt;br /&gt;
		else&lt;br /&gt;
			row = mw.ustring.gsub(row, '&amp;lt;td[^&amp;gt;]*CFB%-schedule%-date[^&amp;gt;]*&amp;gt;%s*&amp;lt;/td&amp;gt;%s*', '')&lt;br /&gt;
		end&lt;br /&gt;
		if showtime then&lt;br /&gt;
			row = mw.ustring.gsub(row, '&amp;lt;td[^&amp;gt;]*CFB%-schedule%-time[^&amp;gt;]*&amp;gt;', '&amp;lt;td style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;')&lt;br /&gt;
		else&lt;br /&gt;
			row = mw.ustring.gsub(row, '&amp;lt;td[^&amp;gt;]*CFB%-schedule%-time[^&amp;gt;]*&amp;gt;%s*&amp;lt;/td&amp;gt;%s*', '')&lt;br /&gt;
		end&lt;br /&gt;
		if showrank then&lt;br /&gt;
			row = mw.ustring.gsub(row, '&amp;lt;td[^&amp;gt;]*CFB%-schedule%-rank[^&amp;gt;]*&amp;gt;', '&amp;lt;td style=&amp;quot;white-space:nowrap&amp;quot;&amp;gt;')&lt;br /&gt;
		else&lt;br /&gt;
			row = mw.ustring.gsub(row, '&amp;lt;td[^&amp;gt;]*CFB%-schedule%-rank[^&amp;gt;]*&amp;gt;%s*&amp;lt;/td&amp;gt;%s*', '')&lt;br /&gt;
		end&lt;br /&gt;
		if showtv then&lt;br /&gt;
			row = mw.ustring.gsub(row, '&amp;lt;td[^&amp;gt;]*CFB%-schedule%-tv[^&amp;gt;]*&amp;gt;', '&amp;lt;td&amp;gt;')&lt;br /&gt;
		else&lt;br /&gt;
			row = mw.ustring.gsub(row, '&amp;lt;td[^&amp;gt;]*CFB%-schedule%-tv[^&amp;gt;]*&amp;gt;%s*&amp;lt;/td&amp;gt;%s*', '')&lt;br /&gt;
		end&lt;br /&gt;
		if showattend then&lt;br /&gt;
			row = mw.ustring.gsub(row, '&amp;lt;td[^&amp;gt;]*CFB%-schedule%-attend[^&amp;gt;]*&amp;gt;', '&amp;lt;td style=&amp;quot;text-align:center&amp;quot;&amp;gt;')&lt;br /&gt;
		else&lt;br /&gt;
			row = mw.ustring.gsub(row, '&amp;lt;td[^&amp;gt;]*CFB%-schedule%-attend[^&amp;gt;]*&amp;gt;%s*&amp;lt;/td&amp;gt;%s*', '')&lt;br /&gt;
		end&lt;br /&gt;
		if showsource then&lt;br /&gt;
			row = mw.ustring.gsub(row, '&amp;lt;td[^&amp;gt;]*CFB%-schedule%-source[^&amp;gt;]*&amp;gt;', '&amp;lt;td style=&amp;quot;text-align:center&amp;quot;&amp;gt;')&lt;br /&gt;
		else&lt;br /&gt;
			row = mw.ustring.gsub(row, '&amp;lt;td[^&amp;gt;]*CFB%-schedule%-source[^&amp;gt;]*&amp;gt;%s*&amp;lt;/td&amp;gt;%s*', '')&lt;br /&gt;
		end&lt;br /&gt;
		root:wikitext(row)&lt;br /&gt;
		k = k + 1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- footnotes&lt;br /&gt;
	local fnotes = getfootnotes(&lt;br /&gt;
		ncg,&lt;br /&gt;
		hc,&lt;br /&gt;
		args['other-event'] or args['other_event'] or args['otherevent'],&lt;br /&gt;
		showrank,&lt;br /&gt;
		yesno(args['opprank'], hasrank),&lt;br /&gt;
		getpolltext(&lt;br /&gt;
			args['rank_year'] or args['rankyear'],&lt;br /&gt;
			args['rank_division'] or args['rankdivision'],&lt;br /&gt;
			args['poll']&lt;br /&gt;
		),&lt;br /&gt;
		showtime and args['timezone'] or '',&lt;br /&gt;
		args['seasonsource']&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	if fnotes ~= nil then&lt;br /&gt;
		root:tag('tr')&lt;br /&gt;
				:tag('td')&lt;br /&gt;
				:attr('colspan',cols)&lt;br /&gt;
				:css('font-size', '85%')&lt;br /&gt;
				:wikitext(fnotes)&lt;br /&gt;
	end&lt;br /&gt;
	return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function convert_table(args)&lt;br /&gt;
	local function splitresult(s)&lt;br /&gt;
		local wl = ''&lt;br /&gt;
		s = mw.ustring.gsub(s or '', '&amp;amp;[MmNn][Dd][Aa][Ss][Hh];', '–')&lt;br /&gt;
		s = mw.ustring.gsub(s, '^%s*(.-)%s*$', '%1')&lt;br /&gt;
		local r = ''&lt;br /&gt;
		if mw.ustring.match(s, '^[%a]%s*[%d][%d]*[%D]%s*[%d][%d]*%s*.*$') then&lt;br /&gt;
			local t = {'', '', '', ''}&lt;br /&gt;
			for k = 1,4 do&lt;br /&gt;
				t[k] = mw.ustring.gsub(s,'^([%a])%s*([%d][%d]*)[%D]%s*([%d][%d]*)%s*(.*)$', '%' .. k)&lt;br /&gt;
			end&lt;br /&gt;
			local wl, s1, s2, n = t[1], t[2], t[3], t[4]&lt;br /&gt;
			wl = wl:lower()&lt;br /&gt;
			return wl, s1 .. '–' .. s2 .. n&lt;br /&gt;
		end&lt;br /&gt;
		return '', s&lt;br /&gt;
	end&lt;br /&gt;
	local res = '{{CFB schedule\n'&lt;br /&gt;
	res = res .. (yesno(args['opprank'], false) == false and '' or '| opprank = y\n')&lt;br /&gt;
	res = res .. (isnotempty(args['other-event'])&lt;br /&gt;
			and '| other-event = ' .. args['other-event'] .. '\n' or '')&lt;br /&gt;
	res = res .. (isnotempty(args['rankyear'])&lt;br /&gt;
			and '| rankyear = ' .. args['rankyear'] .. '\n' or '')&lt;br /&gt;
	res = res .. (isnotempty(args['rankdivision'])&lt;br /&gt;
			and '| rankdivision = ' .. args['rankdivision'] .. '\n' or '')&lt;br /&gt;
	res = res .. (isnotempty(args['poll'])&lt;br /&gt;
		and '| poll = ' .. args['poll'] .. '\n' or '')&lt;br /&gt;
	res = res .. (isnotempty(args['timezone'])&lt;br /&gt;
		and '| timezone = ' .. args['timezone'] .. '\n' or '')&lt;br /&gt;
&lt;br /&gt;
	-- switch headers on and off&lt;br /&gt;
	local headers = {'Date', 'Time', 'At/Vs', 'Opponent', 'Rank', 'Site', 'Location', 'TV', 'Result', 'Attendance', 'Source'}&lt;br /&gt;
	local resultoffset = 8&lt;br /&gt;
&lt;br /&gt;
	for k = #headers,1,-1 do&lt;br /&gt;
		if headers[k] == 'Time' and (yesno(args['time'], false) == false) then&lt;br /&gt;
			table.remove(headers,k)&lt;br /&gt;
			resultoffset = resultoffset - 1&lt;br /&gt;
		elseif headers[k] == 'At/Vs' and (yesno(args['atvs'], true) == false) then&lt;br /&gt;
			table.remove(headers,k)&lt;br /&gt;
			resultoffset = resultoffset - 1&lt;br /&gt;
		elseif headers[k] == 'Rank' and (yesno(args['rank'], false) == false) then&lt;br /&gt;
			table.remove(headers,k)&lt;br /&gt;
			resultoffset = resultoffset - 1&lt;br /&gt;
		elseif headers[k] == 'TV' and (yesno(args['tv'], false) == false) then&lt;br /&gt;
			table.remove(headers,k)&lt;br /&gt;
			resultoffset = resultoffset - 1&lt;br /&gt;
		elseif headers[k] == 'Attendance' and (yesno(args['attend'], false) == false) then&lt;br /&gt;
			table.remove(headers,k)&lt;br /&gt;
		elseif headers[k] == 'Source' and (yesno(args['source'], false) == false) then&lt;br /&gt;
			table.remove(headers,k)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- parse the table&lt;br /&gt;
	local k = 1&lt;br /&gt;
	local stopflag = (args[k] == nil) and true or false&lt;br /&gt;
	while stopflag == false do&lt;br /&gt;
		res = res .. '|{{CFB schedule entry\n'&lt;br /&gt;
		for j = 1,#headers do&lt;br /&gt;
			if headers[j] == 'Date' then&lt;br /&gt;
				res = res .. '| date = ' .. mw.ustring.gsub(args[k] or '', '^%s*(.-)%s*$', '%1') .. '\n'&lt;br /&gt;
			elseif headers[j] == 'Time' then&lt;br /&gt;
				res = res .. '| time = ' .. mw.ustring.gsub(args[k] or '', '^%s*(.-)%s*$', '%1') .. '\n'&lt;br /&gt;
			elseif headers[j] == 'At/Vs' then&lt;br /&gt;
				local atvs = mw.ustring.gsub(args[k] or '', '^%s*(.-)%s*$', '%1')&lt;br /&gt;
				atvs = mw.ustring.gsub(atvs, '^@', 'at')&lt;br /&gt;
				atvs = mw.ustring.gsub(atvs, '^[Vv][Ss]?[%.%s]*', 'vs.')&lt;br /&gt;
				if mw.ustring.find(atvs, '^at') then&lt;br /&gt;
					res = res .. '| away = y\n'&lt;br /&gt;
				elseif mw.ustring.find(atvs, '^vs') then&lt;br /&gt;
					res = res .. '| neutral = y\n'&lt;br /&gt;
				elseif atvs ~= '' then&lt;br /&gt;
					res = res .. '| atvs = ~' .. atvs .. '~\n'&lt;br /&gt;
				end&lt;br /&gt;
			elseif headers[j] == 'Opponent' then&lt;br /&gt;
				local opp = mw.ustring.gsub(args[k] or '', '^%s*(.-)%s*$', '%1')&lt;br /&gt;
				if mw.ustring.find(opp, '%s*&amp;lt;[%s/]*[Nn][Cc][Gg][%s/]*&amp;gt;%s*') then&lt;br /&gt;
					opp = mw.ustring.gsub(opp, '%s*&amp;lt;[%s/]*[Nn][Cc][Gg][%s/]*&amp;gt;%s*', ' ')&lt;br /&gt;
					res = res .. '| nonconf = y\n'&lt;br /&gt;
				end&lt;br /&gt;
				if mw.ustring.find(opp, '%s*&amp;lt;[%s/]*[Hh][Cc][%s/]*&amp;gt;%s*') then&lt;br /&gt;
					opp = mw.ustring.gsub(opp, '%s*&amp;lt;[%s/]*[Hh][Cc][%s/]*&amp;gt;%s*', ' ')&lt;br /&gt;
					res = res .. '| homecoming = y\n'&lt;br /&gt;
				end&lt;br /&gt;
				opp = mw.ustring.gsub(opp, '^%s*(.-)%s*$', '%1')&lt;br /&gt;
				opp = mw.ustring.gsub(opp, '^[Nn][Oo][%.%s]*([0-9])', '#%1' )&lt;br /&gt;
				if mw.ustring.find(opp, '^#([0-9]+)%s*') then&lt;br /&gt;
					local orank = mw.ustring.gsub(opp, '^#([0-9]+)%s*(.-)$', '%1' )&lt;br /&gt;
					opp = mw.ustring.gsub(opp, '^#([0-9]+)%s*(.-)$', '%2' )&lt;br /&gt;
					res = res .. '| opprank = ' .. orank .. '\n'&lt;br /&gt;
				end&lt;br /&gt;
				if mw.ustring.find(opp, '^(.-)%s*%((%[%[[^%[%]]*%]%])%)%s*$') then&lt;br /&gt;
					local rgame = mw.ustring.gsub(opp, '^(.-)%s*%((%[%[[^%[%]]*%]%])%)%s*$', '%2')&lt;br /&gt;
					opp = mw.ustring.gsub(opp, '^(.-)%s*%((%[%[[^%[%]]*%]%])%)%s*$', '%1')&lt;br /&gt;
					res = res .. '| gamename = ' .. rgame .. '\n'&lt;br /&gt;
				end&lt;br /&gt;
				res = res .. '| opponent = ' .. opp .. '\n'&lt;br /&gt;
			elseif headers[j] == 'Rank' then&lt;br /&gt;
				local mrank = mw.ustring.gsub(args[k] or '', '^%s*(.-)%s*$', '%1')&lt;br /&gt;
				mrank = mw.ustring.gsub(mrank, '^[Nn][Oo][%.%s]*([0-9])', '%1' )&lt;br /&gt;
				mrank = mw.ustring.gsub(mrank, '^#[%.%s]*([0-9])', '%1' )&lt;br /&gt;
				res = res .. '| rank = ' .. mrank .. '\n'&lt;br /&gt;
			elseif headers[j] == 'Site' then&lt;br /&gt;
				res = res .. '| stadium = ' .. mw.ustring.gsub(args[k] or '', '^%s*(.-)%s*$', '%1') .. '\n'&lt;br /&gt;
			elseif headers[j] == 'Location' then&lt;br /&gt;
				local loc = mw.ustring.gsub(args[k] or '', '^%s*(.-)%s*$', '%1')&lt;br /&gt;
				local rname = ''&lt;br /&gt;
				if mw.ustring.find(loc, '^(.-)%s*%((%[%[[^%[%]]*%]%])%)%s*$') then&lt;br /&gt;
					rgame = mw.ustring.gsub(loc, '^(.-)%s*%((%[%[[^%[%]]*%]%])%)%s*$', '%2')&lt;br /&gt;
					rname = rname .. '| gamename = ' .. rgame .. '\n'&lt;br /&gt;
					loc = mw.ustring.gsub(loc, '^(.-)%s*%((%[%[[^%[%]]*%]%])%)%s*$', '%1')&lt;br /&gt;
				end&lt;br /&gt;
				res = res .. '| cityst = ' .. loc .. '\n'&lt;br /&gt;
				res = res .. rname&lt;br /&gt;
			elseif headers[j] == 'TV' then&lt;br /&gt;
				res = res .. '| tv = ' .. mw.ustring.gsub(args[k] or '', '^%s*(.-)%s*$', '%1') .. '\n'&lt;br /&gt;
			elseif headers[j] == 'Result' then&lt;br /&gt;
				local wl, score = splitresult(args[k] or '')&lt;br /&gt;
				res = res .. '| w/l = ' .. wl .. '\n'&lt;br /&gt;
				res = res .. '| score = ' .. score .. '\n'&lt;br /&gt;
			elseif headers[j] == 'Attendance' then&lt;br /&gt;
				res = res .. '| attend = ' .. mw.ustring.gsub(args[k] or '', '^%s*(.-)%s*$', '%1') .. '\n'&lt;br /&gt;
			elseif headers[j] == 'Source' then&lt;br /&gt;
				res = res .. '| source = ' .. mw.ustring.gsub(args[k] or '', '^%s*(.-)%s*$', '%1') .. '\n'&lt;br /&gt;
			else&lt;br /&gt;
				res = res .. '| ?? = ' .. mw.ustring.gsub(args[k] or '', '^%s*(.-)%s*$', '%1') .. '\n'&lt;br /&gt;
			end&lt;br /&gt;
			k = k + 1&lt;br /&gt;
			stopflag = (args[k] == nil) and true or false&lt;br /&gt;
		end&lt;br /&gt;
		res = res .. '}}\n'&lt;br /&gt;
	end&lt;br /&gt;
	res = res .. '}}'&lt;br /&gt;
&lt;br /&gt;
	return res&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function make_table(args)&lt;br /&gt;
	local hasgamename = true&lt;br /&gt;
&lt;br /&gt;
	-- switch headers on and off&lt;br /&gt;
	local headers = {'Date', 'Time', 'At/Vs', 'Opponent', 'Rank', 'Site', 'Location', 'Game name', 'TV', 'Result', 'Attendance', 'Source'}&lt;br /&gt;
	local resultoffset = 9&lt;br /&gt;
&lt;br /&gt;
	local ncg, hc = false, false&lt;br /&gt;
&lt;br /&gt;
	for k = #headers,1,-1 do&lt;br /&gt;
		if headers[k] == 'Time' and (yesno(args['time'], false) == false) then&lt;br /&gt;
			table.remove(headers,k)&lt;br /&gt;
			resultoffset = resultoffset - 1&lt;br /&gt;
		elseif headers[k] == 'At/Vs' and (yesno(args['atvs'], true) == false) then&lt;br /&gt;
			table.remove(headers,k)&lt;br /&gt;
			resultoffset = resultoffset - 1&lt;br /&gt;
		elseif headers[k] == 'Rank' and (yesno(args['rank'], false) == false) then&lt;br /&gt;
			table.remove(headers,k)&lt;br /&gt;
			resultoffset = resultoffset - 1&lt;br /&gt;
		elseif headers[k] == 'Game name' and (yesno(args['gamename'], false) == false) then&lt;br /&gt;
			table.remove(headers,k)&lt;br /&gt;
			resultoffset = resultoffset - 1&lt;br /&gt;
			hasgamename = false&lt;br /&gt;
		elseif headers[k] == 'TV' and (yesno(args['tv'], false) == false) then&lt;br /&gt;
			table.remove(headers,k)&lt;br /&gt;
			resultoffset = resultoffset - 1&lt;br /&gt;
		elseif headers[k] == 'Attendance' and (yesno(args['attend'], false) == false) then&lt;br /&gt;
			table.remove(headers,k)&lt;br /&gt;
		elseif headers[k] == 'Source' and (yesno(args['source'], false) == false) then&lt;br /&gt;
			table.remove(headers,k)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- create the root table&lt;br /&gt;
	local root = mw.html.create('table')&lt;br /&gt;
	root:addClass('wikitable')&lt;br /&gt;
		:css('font-size', '95%')&lt;br /&gt;
	&lt;br /&gt;
	-- optional caption&lt;br /&gt;
	if args['caption'] then&lt;br /&gt;
		root:tag('caption'):wikitext(args['caption'])&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- add the headers&lt;br /&gt;
	local row = root:tag('tr')&lt;br /&gt;
	for k=1,#headers do&lt;br /&gt;
		if headers[k] == 'Rank' then&lt;br /&gt;
			local cell = row:tag('th')&lt;br /&gt;
			cell:wikitext('Rank')&lt;br /&gt;
		elseif headers[k] == 'Location' then&lt;br /&gt;
		elseif headers[k] == 'At/Vs' then&lt;br /&gt;
		elseif headers[k] == 'Opponent' then&lt;br /&gt;
			local cell = row:tag('th')&lt;br /&gt;
			cell:wikitext('Opponent')&lt;br /&gt;
		else&lt;br /&gt;
			local cell = row:tag('th')&lt;br /&gt;
			cell:wikitext(headers[k])&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- build the table&lt;br /&gt;
	local k = 1&lt;br /&gt;
	local stopflag = (args[k] == nil) and true or false&lt;br /&gt;
	if stopflag then return '[[Category:Pages using CFB schedule with no content]]' end&lt;br /&gt;
	while stopflag == false do&lt;br /&gt;
		local res, bg = getresult('', args[k+resultoffset] or '', '')&lt;br /&gt;
		row = root:tag('tr'):css('background-color', bg)&lt;br /&gt;
		local op, gn = '', ''&lt;br /&gt;
		for j = 1,#headers do&lt;br /&gt;
			if headers[j] == 'Result' then&lt;br /&gt;
				row:tag('td'):css('white-space', 'nowrap'):wikitext(res)&lt;br /&gt;
			elseif headers[j] == 'At/Vs' then&lt;br /&gt;
			elseif headers[j] == 'Opponent' then&lt;br /&gt;
				if mw.ustring.find(args[k] or '', '&amp;lt;[%s/]*[Nn][Cc][Gg][%s/]*&amp;gt;') then&lt;br /&gt;
					ncg = true&lt;br /&gt;
				end&lt;br /&gt;
				if mw.ustring.find(args[k] or '', '&amp;lt;[%s/]*[Hh][Cc][%s/]*&amp;gt;') then&lt;br /&gt;
					hc = true&lt;br /&gt;
				end&lt;br /&gt;
				op, gn = getopp(args[k], (yesno(args['atvs'], true) == true) and (args[k-1] or '') or '', true)&lt;br /&gt;
				row:tag('td'):wikitext(op)&lt;br /&gt;
			elseif headers[j] == 'Rank' then&lt;br /&gt;
				row:tag('td'):wikitext(getrank(args[k]))&lt;br /&gt;
			elseif headers[j] == 'Site' then&lt;br /&gt;
				row:tag('td'):wikitext(getsite(args[k] or '', args[k+1] or '',&lt;br /&gt;
					(hasgamename and (args[k+2] or '') or '') .. (' ' .. gn)))&lt;br /&gt;
			elseif headers[j] == 'Location' then&lt;br /&gt;
			elseif headers[j] == 'Game name' then&lt;br /&gt;
			elseif headers[j] == 'Attendance' then&lt;br /&gt;
				row:tag('td'):css('text-align', 'center'):wikitext(args[k])&lt;br /&gt;
			else&lt;br /&gt;
				row:tag('td'):wikitext(args[k])&lt;br /&gt;
			end&lt;br /&gt;
			k = k + 1&lt;br /&gt;
			stopflag = (args[k] == nil) and true or false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- footnotes&lt;br /&gt;
	local fnotes = getfootnotes(&lt;br /&gt;
		ncg,&lt;br /&gt;
		hc,&lt;br /&gt;
		args['other-event'] or args['other_event'] or args['otherevent'],&lt;br /&gt;
		yesno(args['rank'], false),&lt;br /&gt;
		yesno(args['opprank'], hasrank),&lt;br /&gt;
		getpolltext(&lt;br /&gt;
			args['rank_year'] or args['rankyear'],&lt;br /&gt;
			args['rank_division'] or args['rankdivision'],&lt;br /&gt;
			args['poll']&lt;br /&gt;
		),&lt;br /&gt;
		(yesno(args['time'], false) == false) and '' or args['timezone'],&lt;br /&gt;
		args['seasonsource']&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	if fnotes ~= nil then&lt;br /&gt;
		row = root:tag('tr')&lt;br /&gt;
		row:tag('td')&lt;br /&gt;
			:attr('colspan',#headers)&lt;br /&gt;
			:css('font-size', '85%')&lt;br /&gt;
			:wikitext(fnotes)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- return the root table&lt;br /&gt;
	return tostring(root) ..&lt;br /&gt;
		(haslocgamename and '[[Category:Pages using CFB schedule with gamename after location]]' or '') ..&lt;br /&gt;
		(hasoppgamename and '[[Category:Pages using CFB schedule with gamename after opponent]]' or '') ..&lt;br /&gt;
		(haslocrivalry and '[[Category:Pages using CFB schedule with rivalry after location]]' or '') ..&lt;br /&gt;
		(hasopprivalry and '[[Category:Pages using CFB schedule with rivalry after opponent]]' or '') ..&lt;br /&gt;
		(hasstrangescore and '[[Category:Pages using CFB schedule with an unusual score]]' or '') ..&lt;br /&gt;
		(hasnowrap and '[[Category:Pages using CFB schedule with nowrap or nbsp opponent]]' or '')&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.entry(frame)&lt;br /&gt;
	local args = (frame.args.opponent ~= nil) and frame.args or frame:getParent().args&lt;br /&gt;
	local cell&lt;br /&gt;
&lt;br /&gt;
	if args['overtime'] then&lt;br /&gt;
		args['overtime'] = ' &amp;lt;sup&amp;gt;' .. args['overtime'] .. '&amp;lt;/sup&amp;gt;'&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local res, bg = getresult(&lt;br /&gt;
		(args['w/l'] or '') .. ' ', &lt;br /&gt;
		args['score'] or '', &lt;br /&gt;
		args['overtime'] or ''&lt;br /&gt;
		)&lt;br /&gt;
&lt;br /&gt;
	local root = mw.html.create('tr')&lt;br /&gt;
		:addClass('CFB-schedule-row')&lt;br /&gt;
		:css('background-color', bg)&lt;br /&gt;
&lt;br /&gt;
	-- Date&lt;br /&gt;
	cell = root:tag('td'):addClass('CFB-schedule-date')&lt;br /&gt;
	if args.date and (args.date):lower() ~= 'no' then&lt;br /&gt;
		cell&lt;br /&gt;
			:css('white-space','nowrap')&lt;br /&gt;
			:wikitext(args.date or '')&lt;br /&gt;
	else&lt;br /&gt;
		cell:css('display','none')&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Time&lt;br /&gt;
	cell = root:tag('td'):addClass('CFB-schedule-time')&lt;br /&gt;
	if args.time and (args.time):lower() ~= 'no' then&lt;br /&gt;
		cell&lt;br /&gt;
			:css('white-space','nowrap')&lt;br /&gt;
			:wikitext(args.time or '')&lt;br /&gt;
	else&lt;br /&gt;
		cell:css('display','none')&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Opponent&lt;br /&gt;
	local op, gn = getopp(&lt;br /&gt;
		(isnotempty(args.opprank) and 'No.&amp;amp;nbsp;' .. args.opprank .. ' ' or '') ..&lt;br /&gt;
		(args.opponent or '') ..&lt;br /&gt;
		((yesno(args.nonconf,false) == true) and '&amp;lt;ncg&amp;gt;' or '') ..&lt;br /&gt;
		((yesno(args.homecoming,false) == true) and '&amp;lt;hc&amp;gt;' or '') ..&lt;br /&gt;
		(args.ref or ''),&lt;br /&gt;
		(isnotempty(args.away) and 'at' or '') ..&lt;br /&gt;
		(isnotempty(args.neutral) and 'vs.' or ''),&lt;br /&gt;
		false&lt;br /&gt;
		)&lt;br /&gt;
	root:tag('td')&lt;br /&gt;
		:css('white-space', 'nowrap')&lt;br /&gt;
		:wikitext(op)&lt;br /&gt;
&lt;br /&gt;
	-- Rank&lt;br /&gt;
	cell = root:tag('td'):addClass('CFB-schedule-rank')&lt;br /&gt;
	if args.rank and (args.rank):lower() ~= 'no' then&lt;br /&gt;
		local rank = args.rank or ''&lt;br /&gt;
		if rank ~= '' then&lt;br /&gt;
			rank = 'No. ' .. rank&lt;br /&gt;
		end&lt;br /&gt;
		cell&lt;br /&gt;
			:css('text-align','center')&lt;br /&gt;
			:css('white-space','nowrap')&lt;br /&gt;
			:wikitext(rank)&lt;br /&gt;
	else&lt;br /&gt;
		cell:css('display','none')&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Gamename&lt;br /&gt;
	local gamename = args.gamename or ''&lt;br /&gt;
&lt;br /&gt;
	-- Site&lt;br /&gt;
	root:tag('td')&lt;br /&gt;
		:wikitext(getsite(args.stadium or args.site_stadium or '', (args.cityst or args.site_cityst or ''), gamename))&lt;br /&gt;
&lt;br /&gt;
	-- TV&lt;br /&gt;
	cell = root:tag('td'):addClass('CFB-schedule-tv')&lt;br /&gt;
	if args.tv and (args.tv):lower() ~= 'no' then&lt;br /&gt;
		cell&lt;br /&gt;
			:wikitext(args.tv or '')&lt;br /&gt;
	else&lt;br /&gt;
		cell:css('display','none')&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Result&lt;br /&gt;
	root:tag('td')&lt;br /&gt;
		:css('white-space','nowrap')&lt;br /&gt;
		:wikitext(res)&lt;br /&gt;
&lt;br /&gt;
	-- Attendance&lt;br /&gt;
	cell = root:tag('td'):addClass('CFB-schedule-attend')&lt;br /&gt;
	if args.attend and (args.attend):lower() ~= 'no' then&lt;br /&gt;
		cell&lt;br /&gt;
			:css('text-align','center')&lt;br /&gt;
			:wikitext(args.attend or '')&lt;br /&gt;
	else&lt;br /&gt;
		cell:css('display','none')&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Source&lt;br /&gt;
	cell = root:tag('td'):addClass('CFB-schedule-source')&lt;br /&gt;
	if args.source and (args.source):lower() ~= 'no' then&lt;br /&gt;
		cell&lt;br /&gt;
			:css('text-align','center')&lt;br /&gt;
			:wikitext(args.source or '')&lt;br /&gt;
	else&lt;br /&gt;
		cell:css('display','none')&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.subst(frame)&lt;br /&gt;
	local args = frame.args[1] and frame.args or frame:getParent().args&lt;br /&gt;
	if (args[1] or ''):find('&amp;lt;tr[^&amp;gt;]*CFB%-schedule%-row') then&lt;br /&gt;
		return make_outer_table(args)&lt;br /&gt;
	else&lt;br /&gt;
		return convert_table(args)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.table(frame)&lt;br /&gt;
	local args = frame.args[1] and frame.args or frame:getParent().args&lt;br /&gt;
	if (args[1] or ''):find('&amp;lt;tr[^&amp;gt;]*CFB%-schedule%-row') then&lt;br /&gt;
		return make_outer_table(args) .. '[[Category:Pages using CFB schedule with named parameters]]'&lt;br /&gt;
	else&lt;br /&gt;
		return make_table(args) .. '[[Category:Pages using CFB schedule with unnamed parameters]]'&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Zoran</name></author>
	</entry>
</feed>