<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://stockhub.co/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://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ACFB_schedule"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:CFB_schedule&amp;action=history"/>
	<updated>2026-05-26T04:30:49Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://stockhub.co/index.php?title=Module:CFB_schedule&amp;diff=135413&amp;oldid=prev</id>
		<title>imported&gt;Frietjes at 19:18, 24 March 2022</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:CFB_schedule&amp;diff=135413&amp;oldid=prev"/>
		<updated>2022-03-24T19:18:56Z</updated>

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