Redigerer
Modul:Ice hockey box
Hopp til navigering
Hopp til søk
Advarsel:
Du er ikke innlogget. IP-adressen din vil bli vist offentlig om du redigerer. Hvis du
logger inn
eller
oppretter en konto
vil redigeringene dine tilskrives brukernavnet ditt, og du vil få flere andre fordeler.
Antispamsjekk.
Ikke
fyll inn dette feltet!
-- 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(s[k]) then table.insert(t, s[k]) 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('Mål') 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(pt[k] or '', '^[%s]*([0-9][0-9]*)[^0-9][^0-9]*([0-9][0-9]*)[%s]*$', '%1') or '-1') or -1 local s2 = tonumber(mw.ustring.gsub(pt[k] or '', '^[%s]*([0-9][0-9]*)[^0-9][^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 = ' .. (gt1[k] or '') .. ' GT2 = ' .. (gt2[k] 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(gt1[k] or '') row:tag('td') :css('text-align','center') :css('width', '22%') :wikitext(pt[k] or '') row:tag('td') :css('text-align','left') :css('width', '39%') :wikitext(gt2[k] 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('–') 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('Tilskuere:') 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'], 'Kamprapport')) 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('Målvakter') 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('Dommere:') cell:wikitext('<br>' .. args['official'] .. '<br>' .. args['official2']) else cell:tag('i'):wikitext('Dommer:') cell:wikitext('<br>' .. args['official']) end end if isnotempty(args['linesman']) then cell:wikitext('<br>') if isnotempty(args['linesman2']) then cell:tag('i'):wikitext('Linjedommere:') cell:wikitext('<br>' .. args['linesman'] .. '<br>' .. args['linesman2']) else cell:tag('i'):wikitext('Linjedommer:') 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']) or isnotempty(args['soprogression']) then soshots1 = table.concat(mysplit(args['soshots1'] or ''), '<br>') soprogression = table.concat(mysplit(args['soprogression'] 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') :wikitext(soprogression or '') 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('Utvisningsminutter') 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('Skudd') 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'], 'Kamprapport')) 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
Redigeringsforklaring:
Merk at alle bidrag til Wikisida.no anses som frigitt under Creative Commons Navngivelse-DelPåSammeVilkår (se
Wikisida.no:Opphavsrett
for detaljer). Om du ikke vil at ditt materiale skal kunne redigeres og distribueres fritt må du ikke lagre det her.
Du lover oss også at du har skrevet teksten selv, eller kopiert den fra en kilde i offentlig eie eller en annen fri ressurs.
Ikke lagre opphavsrettsbeskyttet materiale uten tillatelse!
Avbryt
Redigeringshjelp
(åpnes i et nytt vindu)
Forhåndsvis en side som bruker denne malen
Mal som brukes på denne siden:
Modul:Ice hockey box/dok
(
rediger
)
Navigasjonsmeny
Personlige verktøy
Ikke logget inn
Brukerdiskusjon
Bidrag
Opprett konto
Logg inn
Navnerom
Modul
Diskusjon
English
Visninger
Les
Rediger kilde
Vis historikk
Mer
Navigasjon
Forside
Siste endringer
Tilfeldig side
Hjelp til MediaWiki
Verktøy
Lenker hit
Relaterte endringer
Spesialsider
Sideinformasjon