From Wikipedia, the free encyclopedia

-- implements [[template:IceHockeybox]]

local p = {}



local errorcats = ''



local function isnotempty(s)

	return s and s:match( '^%s*(.-)%s*$' ) ~= ''

end



local function makelink(s,t)

	if s:match('^[Hh][Tt][Tt][Pp][Ss]?:[^ ]*$') then

		return '[' .. s .. ' ' .. t .. ']'

	end

	return s

end



local function mysplit(s)

	-- Change <br> tags to slashes

	s = mw.ustring.gsub(s or '', '<[\/%s]*[Bb][Rr][^<>]*>', ' / ')

	s = mw.ustring.gsub(s or '', '[%s]* /[%s]*', ' / ')

	s = mw.ustring.gsub(s or '', '[%s]*/ [%s]*', ' / ')

	-- Split into a table

	s = mw.text.split(s .. ' / ', ' / ')

	-- Remove empty rows

	local t = {}

	for k=1,#s do

		if isnotempty(sk]) then

			table.insert(t, sk])

		end

	end

	return t

end



local function scoringtable(g1, g2, p)

	local root = ''

	-- If there is no progression then do a very simple format

	if (not isnotempty(p)) and (isnotempty(g1) or isnotempty(g2)) then

		root = mw.html.create('table')

			root

				:attr('cellspacing', '0')

				:css('width', '100%')

		local row = root:tag('tr'):css('text-align','top')

		row:tag('td')

			:css('text-align','right')

			:css('width', '39%')

			:wikitext(g1 or '')

		row:tag('td')

			:css('text-align','center')

			:css('width', '22%')

			:tag('i'):wikitext('Goals')

		row:tag('td')

			:css('text-align','left')

			:css('width', '39%')

			:wikitext(g2 or '')

		return tostring(root)

	end

	

	-- Split into tables

	local gt1 = mysplit(g1)

	local gt2 = mysplit(g2)

	local pt  = mysplit(p)

	-- Align goals with scores in progression

	local score1, score2 = 0, 0

	for k = 1,#pt do

		local s1 = tonumber(mw.ustring.gsub(ptk or '', '^[%s]*([0-9]+)[^0-9]+([0-9]+)[%s]*$', '%1') or '-1') or -1

		local s2 = tonumber(mw.ustring.gsub(ptk or '', '^[%s]*([0-9]+)[^0-9]+([0-9]+)[%s]*$', '%2') or '-1') or -1

		if s1 == (score1 + 1) and s2 == score2 then

			score1 = s1

			table.insert(gt2, k, '')

		elseif s2 == (score2 + 1) and s1 == score1 then

			score2 = s2

			table.insert(gt1, k, '')

		else

			errorcats = errorcats .. '[[Category:Pages using icehockeybox with improperly formatted progression or goals]]'

			errorcats = errorcats .. 'Error: Goals/Progression mismatch: S1 = ' .. s1 .. ' S2 = ' .. s2 .. ' GT1 = ' .. (gt1k or '') .. ' GT2 = ' .. (gt2k or '') .. '<br>'

		end

	end

	if not (#gt1 == #pt) or not(#gt2 == #pt) then

		errorcats = errorcats .. '[[Category:Pages using icehockeybox with improperly formatted progression or goals]]'

		errorcats = errorcats .. 'Error: Goals/Progression mismatch: N1 = ' .. #gt1 .. ' N2 = ' .. #gt2 .. ' PN = ' .. #pt .. '<br>'

	end

	-- Now build the score table

	for k=1,#pt do

		if k == 1 then

			root = mw.html.create('table')

			root

				:attr('cellspacing', '0')

				:css('width', '100%')

		end

		local row = root:tag('tr'):css('text-align','top')

		row:tag('td')

			:css('text-align','right')

			:css('width', '39%')

			:wikitext(gt1k or '')

		row:tag('td')

			:css('text-align','center')

			:css('width', '22%')

			:wikitext(ptk or '')

		row:tag('td')

			:css('text-align','left')

			:css('width', '39%')

			:wikitext(gt2k or '')

	end

	

	return tostring(root)

end



function p.box( frame )

	local args = frame:getParent().args

	local res = ''

	local id = args'id' or ''

	

	id = mw.ustring.gsub(id,'^"(.-)"$', '%1')

	

	local root = mw.html.create('table')

	root

		:attr('cellspacing', '0')

		:attr('id', id )

		:css('width', '100%')

		:css('background-color', args'bg' or '#eeeeee')

		:addClass('vevent')

	local row = root:tag('tr'):addClass('summary')

	-- Date and time

	local cell = row:tag('td')

		:css('width', '15%')

		:css('text-align', 'center')

		:css('font-size', '85%')

	cell:wikitext(args'date' or '')

	cell:wikitext(isnotempty(args'time']) and '<br>' .. args'time' or '')

	-- Team 1

	cell = row:tag('td')

		:css('width', '25%')

		:css('text-align', 'right')

		:addClass('vcard attendee')

	cell:tag('span'):addClass('fn org'):wikitext(args'team1' or '')

	-- Score

	cell = row:tag('td')

		:css('width', '15%')

		:css('text-align', 'center')

	if isnotempty(args'score']) then

		cell:tag('b'):wikitext(args'score'])

	else

		cell:tag('abbr'):attr('title', 'versus'):css('text-decoration', 'none'):wikitext('v')	

	end

	if isnotempty(args'periods']) then

		cell:wikitext('<br>')

		cell:tag('small'):wikitext(args'periods'])

	end

	-- Team 2

	cell = row:tag('td')

		:css('width', '25%')

		:css('text-align', 'left')

		:addClass('vcard attendee')

	cell:tag('span'):addClass('fn org'):wikitext(args'team2' or '')

	-- Stadium and attendance

	cell = row:tag('td')

		:css('font-size', '85%')

	if isnotempty(args'stadium']) then

		cell:tag('span'):addClass('location'):wikitext(args'stadium'])

	end

	if isnotempty(args'attendance']) then

		cell:wikitext('<br>')

		cell:tag('i'):wikitext('Attendance:')

		cell:wikitext(' ' .. args'attendance'])

	end

	res = res .. tostring(root)



	local hassubtable = 

		isnotempty(args'goalie1']) or 

		isnotempty(args'goalie2']) or

		isnotempty(args'official']) or

		isnotempty(args'linesman']) or

		isnotempty(args'goals1']) or 

		isnotempty(args'goals2']) or

		isnotempty(args'progression']) or

		isnotempty(args'pnote']) or

		isnotempty(args'soshots1']) or

		isnotempty(args'soshots2']) or

		isnotempty(args'sonote']) or

		isnotempty(args'otgoals1']) or

		isnotempty(args'otgoals2']) or 

		isnotempty(args'otprogression']) or

		isnotempty(args'otnote']) or

		isnotempty(args'penalties1']) or

		isnotempty(args'penalties2']) or

		isnotempty(args'shots1']) or

		isnotempty(args'shot2'])

	if isnotempty(args'score']) and hassubtable then

		root = mw.html.create('table')

		root

			:addClass('mw-collapsible mw-collapsed')

			:attr('cellspacing', '0')

			:css('width', '100%')

			:css('background-color', args'bg' or '#eeeeee')

		cell = root:tag('tr'):tag('th')

		cell:attr('colspan', '5')

			:css('text-align', 'center')

			:css('font-size', '85%')

		if isnotempty(args'reference']) then

			cell:wikitext(makelink(args'reference'], 'Game reference'))

		end

		-- Empty spacing

		row = root:tag('tr'):css('font-size', '85%')

		cell = row:tag('td')

			:attr('rowspan', '7')

			:css('width', '15%')

			:css('vertical-align', 'top')



		-- Goalies

		cell = row:tag('td')

			:css('width', '25%')

			:css('vertical-align', 'top')

			:css('text-align', 'right')

			:wikitext(args'goalie1' or '')

		cell = row:tag('td')

			:css('width', '15%')

			:css('vertical-align', 'top')

			:css('text-align', 'center')

		if isnotempty(args'goalie1']) or isnotempty(args'goalie2']) then

			cell:tag('i'):wikitext('Goalies')

		end

		cell = row:tag('td')

			:css('width', '25%')

			:css('vertical-align', 'top')

			:css('text-align', 'left')

			:wikitext(args'goalie2' or '')



		-- Officials and linesmen

		cell = row:tag('td')

			:attr('rowspan', '7')

			:css('vertical-align', 'top')

		if isnotempty(args'official']) then

			if isnotempty(args'official2']) then

				cell:tag('i'):wikitext('Referees:')

				cell:wikitext('<br>' .. args'official' .. '<br>' .. args'official2'])

			else

				cell:tag('i'):wikitext('Referee:')

				cell:wikitext('<br>' .. args'official'])

			end

		end

		if isnotempty(args'linesman']) then

			cell:wikitext('<br>')

			if isnotempty(args'linesman2']) then

				cell:tag('i'):wikitext('Linesmen:')

				cell:wikitext('<br>' .. args'linesman' .. '<br>' .. args'linesman2'])

			else

				cell:tag('i'):wikitext('Linesman:')

				cell:wikitext('<br>' .. args'linesman'])

			end

		end

		-- Goals and progression

		row = root:tag('tr'):css('font-size', '85%')

		cell = row:tag('td')

			:attr('colspan', '3')

			:css('width', '65%')

			:wikitext(

				scoringtable(args'goals1' or '', 

							args'goals2' or '',

							args'progression' or '')

					)

		if isnotempty(args'pnote']) then

			row = root:tag('tr'):css('font-size', '85%')

			row:tag('td')

				:attr('colspan', '3')

				:css('text-align','center')

				:css('width', '65%')

				:wikitext(args'pnote'])

		end

		-- Shoot out

		if isnotempty(args'soshots1']) or isnotempty(args'soshots2']) then

			soshots1 = table.concat(mysplit(args'soshots1' or ''), '<br>')

			soshots2 = table.concat(mysplit(args'soshots2' or ''), '<br>')

			row = root:tag('tr'):css('font-size', '85%')

			row:tag('td')

				:css('width', '25%')

				:css('vertical-align', 'top')

				:css('text-align', 'right')

				:wikitext(soshots1 or '')

			row:tag('td')

				:css('width', '15%')

				:css('vertical-align', 'top')

				:css('text-align', 'center')

				:tag('i'):wikitext('[[Overtime (ice hockey)#Shootout|Shootout]]')

			row:tag('td')

				:css('width', '25%')

				:css('vertical-align', 'top')

				:css('text-align', 'left')

				:wikitext(soshots2 or '')

		end

		if isnotempty(args'sonote']) then

			row = root:tag('tr'):css('font-size', '85%')

			row:tag('td')

				:attr('colspan', '3')

				:css('text-align', 'center')

				:css('width', '65%')

				:wikitext(args'sonote'])

		end

		-- Second leg overtime

		if isnotempty(args'otgoals1']) or isnotempty(args'otgoals2']) 

						or isnotempty(args'otprogression']) then

			row = root:tag('tr'):css('font-size', '85%')

			cell = row:tag('td')

				:attr('colspan', '3')

				:css('width', '65%')

				:wikitext(

					scoringtable(args'otgoals1' or '', 

							args'otgoals2' or '',

							args'otprogression' or '')

					)

		end

		if isnotempty(args'otnote']) then

			row = root:tag('tr'):css('font-size', '85%')

			row:tag('td')

				:attr('colspan', '3')

				:css('text-align','center')

				:css('width', '65%')

				:wikitext(args'otnote'])

		end

		-- Penalties

		row = root:tag('tr'):css('font-size', '85%')

		cell = row:tag('td')

			:css('width', '25%')

			:css('vertical-align', 'top')

			:css('text-align', 'right')

		if isnotempty(args'penalties1']) then

			cell:tag('i'):wikitext(args'penalties1' .. ' min')

		end

		cell = row:tag('td')

			:css('width', '15%')

			:css('vertical-align', 'top')

			:css('text-align', 'center')

		if isnotempty(args'penalties1']) or isnotempty(args'penalties2']) then

			cell:tag('i'):wikitext('Penalties')

		end

		cell = row:tag('td')

			:css('width', '25%')

			:css('vertical-align', 'top')

			:css('text-align', 'left')

		if isnotempty(args'penalties2']) then

			cell:tag('i'):wikitext(args'penalties2' .. ' min')

		end

		-- Shots

		row = root:tag('tr'):css('font-size', '85%')

		cell = row:tag('td')

			:css('width', '25%')

			:css('vertical-align', 'top')

			:css('text-align', 'right')

		if isnotempty(args'shots1']) then

			cell:tag('i'):wikitext(args'shots1'])

		end

		cell = row:tag('td')

			:css('width', '15%')

			:css('vertical-align', 'top')

			:css('text-align', 'center')

		if isnotempty(args'shots1']) or isnotempty(args'shots2']) then

			cell:tag('i'):wikitext('Shots')

		end

		cell = row:tag('td')

			:css('width', '25%')

			:css('vertical-align', 'top')

			:css('text-align', 'left')

		if isnotempty(args'shots2']) then

			cell:tag('i'):wikitext(args'shots2'])

		end

		res = res .. tostring(root)

	elseif isnotempty(args'reference']) then

		root = mw.html.create('table')

		root

			:attr('cellspacing', '0')

			:css('width', '100%')

			:css('background-color', args'bg' or '#eeeeee')

		cell = root:tag('tr'):tag('th')

		cell:attr('colspan', '5')

			:css('text-align', 'center')

			:css('font-size', '85%')

			:css('padding-right', '4em')

		cell:wikitext(makelink(args'reference'], 'Game reference'))

		res = res .. tostring(root)

	end



	if isnotempty(args'note']) then

		root = mw.html.create('table')

		root

			:attr('cellspacing', '0')

			:css('width', '100%')

			:css('background-color', args'bg' or '#eeeeee')

		cell = root:tag('tr'):tag('td')

		cell

			:css('text-align', 'left')

			:css('font-size', '100%')

			:tag('i'):wikitext(args'note'])

		res = res .. tostring(root) .. '[[Category:Pages using icehockeybox with the note parameter]]'

	end

	-- tracking

	if (args'sogoals1' or args'sogoals2']) then

		errorcats = errorcats .. '[[Category:Pages using icehockeybox with improperly formatted progression or goals| ]]'

	end

	-- make errors visible in preview mode

	if errorcats ~= '' then

		if frame:preprocess( "{{REVISIONID}}" ) == "" then

			errorcats = '<span class="error">' .. errorcats .. '</span>'

		else

			errorcats = '<span style="display:none">' .. errorcats .. '</span>'

		end

	end

	return errorcats .. res

end



return p
From Wikipedia, the free encyclopedia

-- implements [[template:IceHockeybox]]

local p = {}



local errorcats = ''



local function isnotempty(s)

	return s and s:match( '^%s*(.-)%s*$' ) ~= ''

end



local function makelink(s,t)

	if s:match('^[Hh][Tt][Tt][Pp][Ss]?:[^ ]*$') then

		return '[' .. s .. ' ' .. t .. ']'

	end

	return s

end



local function mysplit(s)

	-- Change <br> tags to slashes

	s = mw.ustring.gsub(s or '', '<[\/%s]*[Bb][Rr][^<>]*>', ' / ')

	s = mw.ustring.gsub(s or '', '[%s]* /[%s]*', ' / ')

	s = mw.ustring.gsub(s or '', '[%s]*/ [%s]*', ' / ')

	-- Split into a table

	s = mw.text.split(s .. ' / ', ' / ')

	-- Remove empty rows

	local t = {}

	for k=1,#s do

		if isnotempty(sk]) then

			table.insert(t, sk])

		end

	end

	return t

end



local function scoringtable(g1, g2, p)

	local root = ''

	-- If there is no progression then do a very simple format

	if (not isnotempty(p)) and (isnotempty(g1) or isnotempty(g2)) then

		root = mw.html.create('table')

			root

				:attr('cellspacing', '0')

				:css('width', '100%')

		local row = root:tag('tr'):css('text-align','top')

		row:tag('td')

			:css('text-align','right')

			:css('width', '39%')

			:wikitext(g1 or '')

		row:tag('td')

			:css('text-align','center')

			:css('width', '22%')

			:tag('i'):wikitext('Goals')

		row:tag('td')

			:css('text-align','left')

			:css('width', '39%')

			:wikitext(g2 or '')

		return tostring(root)

	end

	

	-- Split into tables

	local gt1 = mysplit(g1)

	local gt2 = mysplit(g2)

	local pt  = mysplit(p)

	-- Align goals with scores in progression

	local score1, score2 = 0, 0

	for k = 1,#pt do

		local s1 = tonumber(mw.ustring.gsub(ptk or '', '^[%s]*([0-9]+)[^0-9]+([0-9]+)[%s]*$', '%1') or '-1') or -1

		local s2 = tonumber(mw.ustring.gsub(ptk or '', '^[%s]*([0-9]+)[^0-9]+([0-9]+)[%s]*$', '%2') or '-1') or -1

		if s1 == (score1 + 1) and s2 == score2 then

			score1 = s1

			table.insert(gt2, k, '')

		elseif s2 == (score2 + 1) and s1 == score1 then

			score2 = s2

			table.insert(gt1, k, '')

		else

			errorcats = errorcats .. '[[Category:Pages using icehockeybox with improperly formatted progression or goals]]'

			errorcats = errorcats .. 'Error: Goals/Progression mismatch: S1 = ' .. s1 .. ' S2 = ' .. s2 .. ' GT1 = ' .. (gt1k or '') .. ' GT2 = ' .. (gt2k or '') .. '<br>'

		end

	end

	if not (#gt1 == #pt) or not(#gt2 == #pt) then

		errorcats = errorcats .. '[[Category:Pages using icehockeybox with improperly formatted progression or goals]]'

		errorcats = errorcats .. 'Error: Goals/Progression mismatch: N1 = ' .. #gt1 .. ' N2 = ' .. #gt2 .. ' PN = ' .. #pt .. '<br>'

	end

	-- Now build the score table

	for k=1,#pt do

		if k == 1 then

			root = mw.html.create('table')

			root

				:attr('cellspacing', '0')

				:css('width', '100%')

		end

		local row = root:tag('tr'):css('text-align','top')

		row:tag('td')

			:css('text-align','right')

			:css('width', '39%')

			:wikitext(gt1k or '')

		row:tag('td')

			:css('text-align','center')

			:css('width', '22%')

			:wikitext(ptk or '')

		row:tag('td')

			:css('text-align','left')

			:css('width', '39%')

			:wikitext(gt2k or '')

	end

	

	return tostring(root)

end



function p.box( frame )

	local args = frame:getParent().args

	local res = ''

	local id = args'id' or ''

	

	id = mw.ustring.gsub(id,'^"(.-)"$', '%1')

	

	local root = mw.html.create('table')

	root

		:attr('cellspacing', '0')

		:attr('id', id )

		:css('width', '100%')

		:css('background-color', args'bg' or '#eeeeee')

		:addClass('vevent')

	local row = root:tag('tr'):addClass('summary')

	-- Date and time

	local cell = row:tag('td')

		:css('width', '15%')

		:css('text-align', 'center')

		:css('font-size', '85%')

	cell:wikitext(args'date' or '')

	cell:wikitext(isnotempty(args'time']) and '<br>' .. args'time' or '')

	-- Team 1

	cell = row:tag('td')

		:css('width', '25%')

		:css('text-align', 'right')

		:addClass('vcard attendee')

	cell:tag('span'):addClass('fn org'):wikitext(args'team1' or '')

	-- Score

	cell = row:tag('td')

		:css('width', '15%')

		:css('text-align', 'center')

	if isnotempty(args'score']) then

		cell:tag('b'):wikitext(args'score'])

	else

		cell:tag('abbr'):attr('title', 'versus'):css('text-decoration', 'none'):wikitext('v')	

	end

	if isnotempty(args'periods']) then

		cell:wikitext('<br>')

		cell:tag('small'):wikitext(args'periods'])

	end

	-- Team 2

	cell = row:tag('td')

		:css('width', '25%')

		:css('text-align', 'left')

		:addClass('vcard attendee')

	cell:tag('span'):addClass('fn org'):wikitext(args'team2' or '')

	-- Stadium and attendance

	cell = row:tag('td')

		:css('font-size', '85%')

	if isnotempty(args'stadium']) then

		cell:tag('span'):addClass('location'):wikitext(args'stadium'])

	end

	if isnotempty(args'attendance']) then

		cell:wikitext('<br>')

		cell:tag('i'):wikitext('Attendance:')

		cell:wikitext(' ' .. args'attendance'])

	end

	res = res .. tostring(root)



	local hassubtable = 

		isnotempty(args'goalie1']) or 

		isnotempty(args'goalie2']) or

		isnotempty(args'official']) or

		isnotempty(args'linesman']) or

		isnotempty(args'goals1']) or 

		isnotempty(args'goals2']) or

		isnotempty(args'progression']) or

		isnotempty(args'pnote']) or

		isnotempty(args'soshots1']) or

		isnotempty(args'soshots2']) or

		isnotempty(args'sonote']) or

		isnotempty(args'otgoals1']) or

		isnotempty(args'otgoals2']) or 

		isnotempty(args'otprogression']) or

		isnotempty(args'otnote']) or

		isnotempty(args'penalties1']) or

		isnotempty(args'penalties2']) or

		isnotempty(args'shots1']) or

		isnotempty(args'shot2'])

	if isnotempty(args'score']) and hassubtable then

		root = mw.html.create('table')

		root

			:addClass('mw-collapsible mw-collapsed')

			:attr('cellspacing', '0')

			:css('width', '100%')

			:css('background-color', args'bg' or '#eeeeee')

		cell = root:tag('tr'):tag('th')

		cell:attr('colspan', '5')

			:css('text-align', 'center')

			:css('font-size', '85%')

		if isnotempty(args'reference']) then

			cell:wikitext(makelink(args'reference'], 'Game reference'))

		end

		-- Empty spacing

		row = root:tag('tr'):css('font-size', '85%')

		cell = row:tag('td')

			:attr('rowspan', '7')

			:css('width', '15%')

			:css('vertical-align', 'top')



		-- Goalies

		cell = row:tag('td')

			:css('width', '25%')

			:css('vertical-align', 'top')

			:css('text-align', 'right')

			:wikitext(args'goalie1' or '')

		cell = row:tag('td')

			:css('width', '15%')

			:css('vertical-align', 'top')

			:css('text-align', 'center')

		if isnotempty(args'goalie1']) or isnotempty(args'goalie2']) then

			cell:tag('i'):wikitext('Goalies')

		end

		cell = row:tag('td')

			:css('width', '25%')

			:css('vertical-align', 'top')

			:css('text-align', 'left')

			:wikitext(args'goalie2' or '')



		-- Officials and linesmen

		cell = row:tag('td')

			:attr('rowspan', '7')

			:css('vertical-align', 'top')

		if isnotempty(args'official']) then

			if isnotempty(args'official2']) then

				cell:tag('i'):wikitext('Referees:')

				cell:wikitext('<br>' .. args'official' .. '<br>' .. args'official2'])

			else

				cell:tag('i'):wikitext('Referee:')

				cell:wikitext('<br>' .. args'official'])

			end

		end

		if isnotempty(args'linesman']) then

			cell:wikitext('<br>')

			if isnotempty(args'linesman2']) then

				cell:tag('i'):wikitext('Linesmen:')

				cell:wikitext('<br>' .. args'linesman' .. '<br>' .. args'linesman2'])

			else

				cell:tag('i'):wikitext('Linesman:')

				cell:wikitext('<br>' .. args'linesman'])

			end

		end

		-- Goals and progression

		row = root:tag('tr'):css('font-size', '85%')

		cell = row:tag('td')

			:attr('colspan', '3')

			:css('width', '65%')

			:wikitext(

				scoringtable(args'goals1' or '', 

							args'goals2' or '',

							args'progression' or '')

					)

		if isnotempty(args'pnote']) then

			row = root:tag('tr'):css('font-size', '85%')

			row:tag('td')

				:attr('colspan', '3')

				:css('text-align','center')

				:css('width', '65%')

				:wikitext(args'pnote'])

		end

		-- Shoot out

		if isnotempty(args'soshots1']) or isnotempty(args'soshots2']) then

			soshots1 = table.concat(mysplit(args'soshots1' or ''), '<br>')

			soshots2 = table.concat(mysplit(args'soshots2' or ''), '<br>')

			row = root:tag('tr'):css('font-size', '85%')

			row:tag('td')

				:css('width', '25%')

				:css('vertical-align', 'top')

				:css('text-align', 'right')

				:wikitext(soshots1 or '')

			row:tag('td')

				:css('width', '15%')

				:css('vertical-align', 'top')

				:css('text-align', 'center')

				:tag('i'):wikitext('[[Overtime (ice hockey)#Shootout|Shootout]]')

			row:tag('td')

				:css('width', '25%')

				:css('vertical-align', 'top')

				:css('text-align', 'left')

				:wikitext(soshots2 or '')

		end

		if isnotempty(args'sonote']) then

			row = root:tag('tr'):css('font-size', '85%')

			row:tag('td')

				:attr('colspan', '3')

				:css('text-align', 'center')

				:css('width', '65%')

				:wikitext(args'sonote'])

		end

		-- Second leg overtime

		if isnotempty(args'otgoals1']) or isnotempty(args'otgoals2']) 

						or isnotempty(args'otprogression']) then

			row = root:tag('tr'):css('font-size', '85%')

			cell = row:tag('td')

				:attr('colspan', '3')

				:css('width', '65%')

				:wikitext(

					scoringtable(args'otgoals1' or '', 

							args'otgoals2' or '',

							args'otprogression' or '')

					)

		end

		if isnotempty(args'otnote']) then

			row = root:tag('tr'):css('font-size', '85%')

			row:tag('td')

				:attr('colspan', '3')

				:css('text-align','center')

				:css('width', '65%')

				:wikitext(args'otnote'])

		end

		-- Penalties

		row = root:tag('tr'):css('font-size', '85%')

		cell = row:tag('td')

			:css('width', '25%')

			:css('vertical-align', 'top')

			:css('text-align', 'right')

		if isnotempty(args'penalties1']) then

			cell:tag('i'):wikitext(args'penalties1' .. ' min')

		end

		cell = row:tag('td')

			:css('width', '15%')

			:css('vertical-align', 'top')

			:css('text-align', 'center')

		if isnotempty(args'penalties1']) or isnotempty(args'penalties2']) then

			cell:tag('i'):wikitext('Penalties')

		end

		cell = row:tag('td')

			:css('width', '25%')

			:css('vertical-align', 'top')

			:css('text-align', 'left')

		if isnotempty(args'penalties2']) then

			cell:tag('i'):wikitext(args'penalties2' .. ' min')

		end

		-- Shots

		row = root:tag('tr'):css('font-size', '85%')

		cell = row:tag('td')

			:css('width', '25%')

			:css('vertical-align', 'top')

			:css('text-align', 'right')

		if isnotempty(args'shots1']) then

			cell:tag('i'):wikitext(args'shots1'])

		end

		cell = row:tag('td')

			:css('width', '15%')

			:css('vertical-align', 'top')

			:css('text-align', 'center')

		if isnotempty(args'shots1']) or isnotempty(args'shots2']) then

			cell:tag('i'):wikitext('Shots')

		end

		cell = row:tag('td')

			:css('width', '25%')

			:css('vertical-align', 'top')

			:css('text-align', 'left')

		if isnotempty(args'shots2']) then

			cell:tag('i'):wikitext(args'shots2'])

		end

		res = res .. tostring(root)

	elseif isnotempty(args'reference']) then

		root = mw.html.create('table')

		root

			:attr('cellspacing', '0')

			:css('width', '100%')

			:css('background-color', args'bg' or '#eeeeee')

		cell = root:tag('tr'):tag('th')

		cell:attr('colspan', '5')

			:css('text-align', 'center')

			:css('font-size', '85%')

			:css('padding-right', '4em')

		cell:wikitext(makelink(args'reference'], 'Game reference'))

		res = res .. tostring(root)

	end



	if isnotempty(args'note']) then

		root = mw.html.create('table')

		root

			:attr('cellspacing', '0')

			:css('width', '100%')

			:css('background-color', args'bg' or '#eeeeee')

		cell = root:tag('tr'):tag('td')

		cell

			:css('text-align', 'left')

			:css('font-size', '100%')

			:tag('i'):wikitext(args'note'])

		res = res .. tostring(root) .. '[[Category:Pages using icehockeybox with the note parameter]]'

	end

	-- tracking

	if (args'sogoals1' or args'sogoals2']) then

		errorcats = errorcats .. '[[Category:Pages using icehockeybox with improperly formatted progression or goals| ]]'

	end

	-- make errors visible in preview mode

	if errorcats ~= '' then

		if frame:preprocess( "{{REVISIONID}}" ) == "" then

			errorcats = '<span class="error">' .. errorcats .. '</span>'

		else

			errorcats = '<span style="display:none">' .. errorcats .. '</span>'

		end

	end

	return errorcats .. res

end



return p

Videos

Youtube | Vimeo | Bing

Websites

Google | Yahoo | Bing

Encyclopedia

Google | Yahoo | Bing

Facebook