Această pagină este protejată de mișcare
Această pagină este protejată

Formă: TeamBracket-Tennis

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Acest modul este utilizat pentru a implementa șabloane pentru afișarea grafică a turneelor ​​de tenis.


 -
- Acest modul implementează multe șabloane de consolă de tenis
-

local p = {}
argumente locale = {}
runde locale
Seturi locale = {}
compact local
la revedere locală
local hideSeeds
showSeeds locale
local hideHeadings
spectacol local Al treilea
offset local Al treilea
compactFinal locale
local RD1seedmap = {}

isnotblank funcția locală (s)
returnează s și s ~ = "
Sfârșit

ISBLANK funcția locală (s)
return (nu s) sau (s == '')
Sfârșit

parseArgs funcția locală (cadru)
= cadru local fargs . argumente
local pargs = frame : getParent (). argumente;

local r = ToNumber (fargs. rounds or '') sau ToNumber (pargs. rounds or '') sau 2
echipe locale Math.pow = (2, r)
local rdstr = 'RD' .. tostring (r)
local rdbstr = 'RD' .. tostring (r) .. 'b'
local rdp1str = 'RD' .. tostring (r + 1)

pentru i = 1, 2 fac
Targs locale = (i == 1) și pargs sau fargs
pentru k, v în perechi (Targs) do
dacă tastați (k) == 'șir' atunci
dacă k: găsiți ( '^ [R3] [Dr] [D1-9] b?% - [az] [az] * 00 *') atunci
k = mw. ustring . gsub (k, '^ ([R3] [Dr] [D1-9] b?% - [az] [az] *) 00 *', '% 1')
Sfârșit
dacă k: găsiți ( '^' .. rdp1str) atunci
k = mw. ustring . gsub (k, '^' .. rdp1str, '3rd')
elseif k: găsiți ( '^' .. rdbstr) atunci
k = mw. ustring . gsub (k, '^' .. rdbstr, '3rd')
elseif k: găsi ( '^' .. .. rdstr '% - [az] [az] * 3') atunci
k = mw. ustring . gsub (k, '^' .. .. rdstr '(% - [az] [az] *) 3', '3rd% 11')
elseif k: găsi ( '^' .. .. rdstr '% - [az] [az] * 4') atunci
k = mw. ustring . gsub (k, '^' .. .. rdstr '(% - [az] [az] *) 4', '3rd% 12')
elseif k: find ( '^ Consol') atunci
k = mw. ustring . gsub (k, '^ Consol', '3rd')
Sfârșit
Sfârșit
args [ k ] = v
Sfârșit
Sfârșit
Sfârșit

parseSeedmap funcția locală (s)
s = mw. text . divizare ((s sau '0') .. '/', '[% s] * / [% s] *')
echipe locale = Math.pow (2 runde)
pentru r = 1, echipele fac
RD1seedmap [r] = 1
Sfârșit
pentru r = 1, faceți # s
dacă ToNumber (s [r] sau 'x') atunci
RD1seedmap [ToNumber (s [r])] = 0
Sfârșit
Sfârșit
local c = 1
pentru r = 1, echipele fac
dacă RD1seedmap [r]> 0 atunci
RD1seedmap [r] = c
c = c + 1
Sfârșit
Sfârșit
Sfârșit

parseSets funcția locală (s)
s = mw. text . divizare ((S sau '5') .. '/', '[% s] * / [% s] *')
local și n = showThird (runde + 1) sau (runde)
pentru r = 1, n do
dacă s [r] ~ = zero și s [r] ~ = '' și ToNumber (s [r]) atunci
sets [r] = ToNumber (s [r])
elseif setează [r - 1] atunci
seturi [r] = seturi [r - 1]
altceva
seturi [r] = 5
Sfârșit
Sfârșit
Sfârșit

funcție locală addTableRow (tbl)
return tbl: tag ( 'tr')
Sfârșit

Funcția locală addBlank (rând, lățime)
local cell = row: tag ( 'TD')
atunci dacă lățime
Mobil: css ( „lățime”, lățime)
Sfârșit
returnează telefonul mobil
Sfârșit

funcție locală addHeading (rând, r, text)
rând: etichetă ( „TD”)
: Attr ( „colspan”, ToNumber (hideSeeds și „1” sau „2”) seturi + [r])
: Css ( 'text-align', 'center')
: Css ( „border”, „1px solid #aaa”)
: Css ( 'fundal-culoare', args [ 'RD-shade'] sau '# f2f2f2')
: wikitext ( text )
: newline ()
Sfârșit

Funcția locală getWidth (param, implicit)
local arg = args [param .. '-width']
este gol dacă (arg) atunci
arg = implicit
Sfârșit
dacă ToNumber (arg) ~ = zero atunci
arg = arg .. 'px'
Sfârșit
întoarce arg
Sfârșit

Funcția locală getTeamArgName ( de tip tur, echipa)
dacă rotund> rundă atunci
returnarea string.format ( „3rd-% s% d”, tip, echipă)
altceva
if (rotund == 1) atunci
= Echipa RD1seedmap [echipa]
dacă echipa == 0 atunci
returnează „NIL”
Sfârșit
Sfârșit
returnarea string.format ( 'RD% d-% d% s', rundă, tip, echipă)
Sfârșit
Sfârșit

Funcția locală getShadeArg (rotund, echipa, s)
local argname = getTeamArgName (rotund, 'umbră', echipă) .. (s și ( '-' .. s) sau '')
valoare locală = args [argname]
dacă este gol (valoare) atunci
returnează „# f9f9f9”
Sfârșit
valoarea returnată
Sfârșit

Funcția locală getScoreArg (rotund, echipa, s)
local argname = getTeamArgName (rundă, 'scor', echipă) .. (s și ( '-' .. s) sau '')
valoare locală = args [argname]
dacă este gol (valoare) atunci
intoarce ''
Sfârșit
valoarea returnată
Sfârșit

Funcția locală getTeamArg ( de tip tur, echipa)
local argname = getTeamArgName ( tip rundă , echipă)
valoare locală = args [argname]
dacă este gol (valoare) atunci
intoarce ''
Sfârșit
dacă mw . ustring . găsi (valoare, '[% s] * <[% s /] * [Bb] [Rr] [% s /] *> [% s] * și [Nn] [Bb] [SS] [Pp]; [ % s] * ') atunci
	
Sfârșit
întoarce-te mw . ustring . gsub (valoare, '[% s] * <[% s /] * [Bb] [Rr] [% s /] *> [% s] * și [Nn] [Bb] [SS] [Pp]; [ % s] * ',' <br/> ')
Sfârșit

isHidden local function (r, team)
return isblank (getTeamArg (r, „echipă”, echipă))
Sfârșit

Funcția locală getRoundName (rotund)
nume local = args [ rundă „RD” ..]
isnotblank if (name) atunci
returnează numele
Sfârșit
local roundFromLast = rounds - round + 1
dacă roundFromLast == 1 atunci
returnează „Finala”
elseif roundFromLast == 2 atunci
returnează „semifinală”
elseif roundFromLast == 3 atunci
retur "sferturi de finală"
elseif roundFromLast == 4 atunci
returnează „Finala”
elseif roundFromLast == 5 atunci
întoarcere „Finalul șaisprezecelea”
elseif roundFromLast == 6 atunci
returnează „treizeci și două de secunde din finală”
altceva
returnează „Runda de” .. Math.pow (2 roundFromLast)
Sfârșit
Sfârșit

funcție locală AddPath (rânduri, index, rotund, sus, stânga, w)
local top și prop = "border-bottom-width" sau "border-top-width"
dacă stânga și rotundă == 1 atunci
atunci dacă compact
addBlank (rânduri [index])
altceva
addBlank (rânduri [index]): css ( „înălțime”, „7px”)
addBlank (rânduri [index + 1]): css ( „înălțime”, „7px”)
Sfârșit
întoarceți zero
altceva
local cell = addBlank (rânduri [index])
: Attr ( „rânduri”, (nu este compact) și „2” sau zero)
: Css ( „lățimea chenarului”, „0”)
: Css ( „stil de margine”, „solid”)
: Css ( „border-color”, „black”)
dacă stânga sau rotundă <runde și apoi nu stânga
Mobil: css (prop, sau w '2px')
Sfârșit
returnează telefonul mobil
Sfârșit
Sfârșit

renderTeam funcția locală (rând, rotund, echipa, de sus, otherbye)
local seedCell
seedArg local = getTeamArg (rundă, 'seed', echipă)
- valoarea seed pentru echipa pereche
otherbye and local pairSeedArg = " 
sau getTeamArg (rundă, „seed”, echipă% 2 == 0 și echipe - o echipă sau + 1)
- arătați semințele dacă semințele sunt definite pentru unul sau pentru ambii
showSeed local = showSeeds
sau isnotblank (seedArg)
sau isnotblank (pairSeedArg)
dacă showSeed și (nu hideSeeds) atunci
seedCell = rând: etichetă ( „TD”)
: Css ( 'text-align', 'center')
: Css ( „fundal-culoare”, „# f2f2f2”)
: Css ( „border-color”, „#aaa”)
: Css ( „stil de margine”, „solid”)
: Css ( „border-top-width”, (top or otherbye) și „1px” sau „0”)
: Css ( „border-left-width”, „1px”)
: Css ( „border-right-width”, „1px”)
: Css ( „lățimea marginii de jos”, „1px”)
: Attr ( „rânduri”, (nu este compact) și „2” sau zero)
: Wikitext (seedArg)
: newline ()
Sfârșit

local teamArg = getTeamArg (rundă, „echipă”, echipă)
dacă este alb (teamArg) atunci
teamArg = '& nbsp;'
Sfârșit

local teamCell = row: tag ( 'TD')
: Css ( „fundal-culoare”, „# f9f9f9”)
: Css ( „border-color”, „#aaa”)
: Css ( „stil de margine”, „solid”)
: Css ( „border-top-width”, (top or otherbye) și „1px” sau „0”)
: Css ( „border-left-width”, „1px”)
: Css ( „border-right-width”, „1px”)
: Css ( „lățimea marginii de jos”, „1px”)	
: Css ( „padding”, „0 2px”)
: Attr ( „rânduri”, (nu este compact) și „2” sau zero)
: Wikitext (teamArg)
: newline ()
dacă nu showSeed și (nu hideSeeds) atunci
teamCell: attr ( 'colspan', '2')
Sfârșit

scoreCells locale = {}
pentru s = 1, seturile [round] do
scoreCells [s] = rând: etichetă ( „TD”)
: Css ( 'text-align', 'center')
: Css ( „border-color”, „#aaa”)
: Css ( „stil de margine”, „solid”)
: Css ( „border-top-width”, (top or otherbye) și „1px” sau „0”)
: Css ( „border-left-width”, „0”)
: Css ( „border-right-width”, „1px”)
: Css ( „lățimea marginii de jos”, „1px”)	
: Css ( „fundal-culoare”, getShadeArg (rundă, echipă, s))
: Attr ( „rânduri”, (nu este compact) și „2” sau zero)
: Wikitext (getScoreArg (rundă, echipă, s))
: newline ()
Sfârșit
Sfârșit

funcție locală renderRound (rânduri, numărare, r)
echipe locale Math.pow = (2, runde - r + 1)
pas local = număr / echipe
local topteam = true - este rândul de sus în meci
local topPair = true - este top-up-uri de top într-o pereche de match-up-uri
echipa locală = 1

pentru i = 1, numărați, faceți pasul
offset local , înălțime, gol

local hideteam = false
local otherhideteam = false
local hideleftpath = false
dacă r <= byes atunci
hideteam isHidden = (r, echipa)
otherhideteam isHidden = (r, echipa% 2 == 0 și echipă - echipă sau 1 + 1)
Sfârșit
if (r == 1) și (RD1seedmap [team] <= 0) atunci
hideteam = true
Sfârșit
dacă (r> 1) și (r <= (byes + 1)) atunci
hideleftpath isHidden = (r - 1, 2 * team - 1) și isHidden (r - 1, 2 * team)
Sfârșit
dacă (r == 2) și (RD1seedmap [2 * echipă - 1] <= 0 și RD1seedmap [2 * echipă] <= 0) atunci
hideleftpath = adevărat
Sfârșit
compactFinal și if (r == runde) atunci
hideleftpath = adevărat
Sfârșit

- spațiu gol deasupra sau dedesubt
atunci dacă compact
offset = topteam și i sau i + 1
 înălțime = pas - 1
- lăsați loc pentru grupuri pentru alte echipe decât prima și ultima
elseif team == 1 == echipă sau echipe atunci
offset = topteam și i sau i + 2
 înălțime = pas - 2
altceva
offset = topteam și i + 1 sau i + 2
 înălțime = pas - 3
Sfârșit
showThird și if (r == runde) și (nu topteam) atunci
 înălțime = offset - offsetThird
Sfârșit
compactFinal și if (r == (runde - 1)) atunci
dacă echipa == 2 atunci
 înălțime = înălțime - 3
Sfârșit
dacă echipa == 3 atunci
 înălțime = înălțime - 1
offset = offset + 1
rânduri [offset - 3]: etichetă ( „TD”)
: Attr ( „colspan”, ToNumber (hideSeeds și „2” sau „3”) seturi + [r])
rânduri [offset - 4]: etichetă ( „TD”)
addHeading (rânduri [offset - 4], r + 1, getRoundName (r + 1))
rânduri [offset - 4]: tag ( „TD”)
: Attr ( „rânduri”, 2)
: Css ( „border-color”, „black”)
: Css ( „stil de margine”, „solid”)
: Css ( „lățimea chenarului”, „0”)
: Css ( „border-right-width”, „2px”)
Sfârșit
Sfârșit
dacă înălțimea> 0 atunci
blank = addBlank (rânduri [offset])
: Attr ( „colspan”, ToNumber (hideSeeds și „3” sau „4”) seturi + [r])
: Attr (  înălțime ”, înălțime)
: Css ( „border-color”, „black”)
: Css ( „stil de margine”, „solid”)
: Css ( „lățimea chenarului”, „0”)
Sfârșit
- adăugați paranteză
topteam locale și j = i + pas - (compact și 1 sau 2) sau
- adăugați calea stângă
AddPath (rânduri, j, r, topteam, true, hideleftpath și '0' sau '2px')
atunci dacă hideteam
rânduri [j]: etichetă ( „TD”)
: Attr ( „colspan”, ToNumber (hideSeeds și „1” sau „2”) seturi + [r])
: Attr ( „rânduri”, (nu este compact) și 2 sau zero)
altceva
renderTeam (rânduri [j], r, team, topteam, otherhideteam)
Sfârșit
local rightPath = AddPath (rânduri, j, r, topteam, false, hideteam și '0' sau '2px')
dacă nu , atunci topteam topPair = nu se încheie topPair
dacă nu topPair și r <runde și (nu hideteam) atunci
dacă este gol, atunci gol: css ( „margine-dreapta-lățime”, „2 px”) sfârșit
rightPath: css ( 'border-right-width', '2px')
Sfârșit
compactFinal și if (r == runde) atunci
prop local = (team == 1) și „border-bottom-width” sau „border-top-width”
rightPath: css ( 'border-right-width', '2px')
: Css (prop, '2px')
Sfârșit
echipă = + 1 echipă
topteam = not topteam
Sfârșit
Sfârșit

renderGroups funcția locală (rânduri, numărul, rotund)
local roundFromLast = rounds - round + 1
grupuri locale = Math.pow (2 roundFromLast - 2)
pas local = număr / grupuri
grup local = 1
offset local = 0
echipa locală = 0
local w = '2px'

pentru r = 1, rotunde do
offset = offset + (hideSeeds și 3 sau 4) seturi + [r]
Sfârșit
pentru i = pasul / 2, numărați, faceți pasul
local name = 'RD' round .. .. grup '-group' ..
addBlank (rânduri [i]): css ( 'înălțime', '7px')
addBlank (rânduri [i + 1]): css ( „înălțime”, „7px”)
addBlank (rânduri [i])
: Attr ( 'rowpan', '2')
: Attr ( „colspan”, offset - 2)
: Css ( 'text-align', 'center')
: Wikitext (args [nume])
: newline ()
if (rotund <= byes) atunci
echipa = s / (pas / 2)
w = isHidden ( echipa runda 2 * - 1) și isHidden ( echipa runda 2 *) și '0' sau '2px'
Sfârșit
addBlank (rânduri [i])
: Css ( „border-color”, „black”)
: Css ( „stil de margine”, „solid”)
: Css ( „lățimea chenarului”, „0” .. w .. „0 0”)
if (rotund <= byes) atunci
echipă = + 1 echipă
w = isHidden ( echipa runda 2 * - 1) și isHidden ( echipa runda 2 *) și '0' sau '2px'
Sfârșit
addBlank (rânduri [i + 1])
: Css ( „border-color”, „black”)
: Css ( „stil de margine”, „solid”)
: Css ( „lățimea chenarului”, „0” .. w .. „0 0”)
grup = grup + 1
Sfârșit
Sfârșit

getThirdOffset funcția locală ()
offset local = (compact și 1 sau 3) * (Math.pow (2 runde) - Math.pow (2, runde - 3)) - (compact și 2 sau 4)
dacă runde <4 atunci
offset = compact și 8 sau 17
dacă runde <3 atunci
offset = compact și 6 sau 10
dacă runde <2 atunci
offset = compact și 4 sau 6
Sfârșit
Sfârșit
Sfârșit
returnează compensări
Sfârșit

a treia funcție locală (rânduri, numărare)
local k = offsetThird
rând local = rânduri [k]
gol local
--if (offsetThird <count) atunci
--blank = addBlank (rând)
--blank: attr ('colspan', tonumber (hideSeeds și '3' sau '4') + seturi [1])
--Sfârșit
blank = addBlank (rând)
addHeading (rând, runde + 1, args [ „3”] sau „Final pentru locul 3 ”)
k = k + (compact și 2 sau 3)
pentru i = 1, 2 fac
rând = rânduri [k]
blank = addBlank (rând)
renderTeam (rând, runde + 1, i, i == 1, fals)
k = k + (compact și 1 sau 2)
Sfârșit
Sfârșit

funcție locală renderTree (tbl)
- creați 3 sau 1 rânduri pentru fiecare echipă
număr local = Math.pow (2 runde) * (compact și 1 sau 3)
număr offset local = 2 * (compact și 1 sau 3) + (compact și 2 sau 3)
Rânduri locale = {}
offsetThird = getThirdOffset ()
pentru i = 1, conta do
rânduri [i] = addTableRow (tbl)
Sfârșit
atunci dacă showThird
pentru i = (count + 1), (+ offsetcount offsetThird) do
rânduri [i] = addTableRow (tbl)
dacă (runde> 1) atunci
Blank local = addBlank (rânduri [i])
gol: attr ( 'colspan', ToNumber (hideSeeds și '3' sau '4') + seturi [1])
dacă compact și (runde> 2) atunci
blank = addBlank (rânduri [i])
gol: attr ( 'colspan', ToNumber (hideSeeds și '3' sau '4') + seturi [1])
Sfârșit
Sfârșit
Sfârșit
Sfârșit
dacă nu, atunci compact
- umpleți rânduri cu grupuri
pentru r = 1, runde - 1 faceți
renderGroups (rânduri, numărare, r)
Sfârșit
Sfârșit
- umpleți rândurile cu paranteză
pentru r = 1, faceți runde
renderRound (rânduri, numărare, r)
Sfârșit
atunci dacă showThird
renderThird (rânduri, numărare, compacție)
Sfârșit
Sfârșit

funcție locală renderHeadings (tbl)
local titleRow addTableRow = ((nu hideHeadings) și tbl sau mw. html. creat ( „tabel”))
local widthRow = addTableRow (tbl)
pentru r = 1, (compactFinal și (runde - 1) sau runde) fac
addBlank (titleRow)
addBlank (widthRow, r> 1 și „5px” sau „1px”)
addHeading (titleRow, r, getRoundName (r))
local seedCell
if (nu hideSeeds) atunci
seedCell = addBlank (widthRow, getWidth ( 'seed', '25px'))
Sfârșit
local teamCell = addBlank (widthRow, getWidth ( 'team', '150px'))
scoreCells locale = {}
pentru s = 1, seturile [r] do
scoreCells [s] = addBlank (widthRow, getWidth ( 'score', '12px'))
Sfârșit
addBlank (titleRow)
addBlank (widthRow, r <rounds and '5px' or '1px')

atunci dacă compact
teamCell: css ( „înălțime”, „7px”)
altceva
atunci dacă seedCell
seedCell: wikitext ( '& nbsp;')
Sfârșit
teamCell: wikitext ( '& nbsp;')
pentru s = 1, seturile [r] do
scoreCells [s]: wikitext ( '& nbsp;')
Sfârșit
Sfârșit
Sfârșit
Sfârșit

funcția p . teamBracket (cadru)
parseArgs (cadru)
runde = ToNumber ( arg . runde) sau 2
echipe locale = Math.pow (2 runde)
compact = (args [ 'compact'] și (args [ 'compact'] == 'da' sau args [ 'compact'] == 'y'))
compactFinal = ((runde> 4) și compact și args [ 'compact-final'] și (args [ 'compact-final'] == 'da' sau args [ 'compact-final'] == 'y'))
hideSeeds = (args [ 'semințe'] și (args [ 'semințe'] == 'nu' sau args [ 'semințe'] == 'n'))
showSeeds = (args [ 'semințe'] și (args [ 'semințe'] == 'da' sau args [ 'semințe'] == 'y'))
byes = (args [ 'byes'] și (args [' byes'] == 'yes' sau args [' byes'] == 'y') și 1) sau (ToNumber (args [ 'byes'] sau ' 0 ') sau 0)
hideHeadings = (args [ ' headings '] și (args [ ' headings '] == 'nu' sau args [ 'headings'] == 'n'))
showThird = isnotblank (args [ '3rd']]) sau isnotblank (args [ '3rd-team1']) sau isnotblank (args [ '3rd-team2'])
parseSeedmap (args [ 'RD1-omit'])
parseSets (argumente. seturi)

- creați tabelul
local tbl = mw. html . create ( 'tabel' )
: Css ( „în stilul chenarului”, „niciunul”)
: Css ( 'font-size', '90% ')
: Css ( „margin”, „2em 1em 1em 1em”)
: Css ( „border-collapse”, „separate”)
: Css ( „spațiere la frontieră”, „0”)
: Attr ( 'cellpadding', '0')

if (args [ 'nowrap'] și (args [ 'nowrap'] == 'da' sau args [ 'nowrap'] == 'y')) atunci
tbl: css ( „spațiu alb”, „nowrap”)
Sfârșit

renderHeadings (tbl)
renderTree (tbl)
toString return (tbl)
Sfârșit

retur p