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

Formă: carieră sportivă

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

Acest modul implementează funcționalitatea șablonului {{ Carieră sportivă }}.


 local getArgs = require ( 'Modul: Argumente' ). getArgs
local p = {}

- modelele acceptate trebuie să aibă întotdeauna 3 grupuri: (prefix) (numele echipei) (sufix)
local supportedPatterns = {
'(→ *) (. *) (.-)' , - pentru transferuri
'(<[^ <>] *>) (. *) (<* / [^ <>] *>)' , - pentru etichete (recunoaște și {{TA}} și altele asemenea)
'(.-) (. *) (% c \' "` UNIQ --- ref. * QINU` " \ ' % c)' - pentru note
}

funcția locală makeTag ( nume , conținut , atribute )
returnează string.format ( '<% s% s>% s </% s>' , nume , atribute sau '' , conținut sau '' , nume )
Sfârșit

funcția locală makeTd ( conținut , atribute )
returnează makeTag ( „td” , conținut , atribute )
Sfârșit

funcție locală getYearFromRange ( interval )
- Dacă intervalul de timp are un format recunoscut, atunci obțineți ultimul an și micșorați-l cu unul
- în caz contrar, dacă intervalul de timp este de numai un an, atunci folosiți-l pe acesta din urmă
- anul inițial admite și semne de întrebare
return ( interval : find ( '^ [% d?] [% d?] [% d?] [% d?] * [ \ -–] *% d% d% d% d $' ) și ( tonumber ( interval : sub ( - 4 )) - 1 ) )
sau ( interval : găsiți ( '^% d% d% d% d $' ) și interval )
sau ''
Sfârșit

funcție locală unformat ( conținut )
local newContent = conținut
local matchedPatterns = {}
repeta
local matched = false
pentru i = 1 , fac # modele suportate
prefix local, de mijloc, sufix = newContent: meci (supportedPatterns '^' .. [i] .. '$')
dacă middle și newContent ~ = middle atunci
matched = adevărat
newContent = mijloc
- salvați perechea prefix-sufix în prima poziție, astfel încât să fie pescuit din partea de sus a stivei
table.insert ( matchedPatterns , 1 , { prefix , sufix })
Sfârșit
Sfârșit
până ( fără potrivire ) - continuați bucla până când nu mai primesc meciuri
returnează newContent , matchedPatterns
Sfârșit

reformatarea funcției locale ( conținut , împachetări )
local newContent = conținut
pentru i = 1 , fac # împachetări
local wrapper = wrappers [ i ]
newContent = wrapper [ 1 ] .. newContent .. wrapper [ 2 ]
Sfârșit
întoarce newContent
Sfârșit

funcția p . getList ( cadru )
argumente locale = getArgs ( cadru )
sport local = args [ 'sport' ] sau ''
local pos = args [ 'pos' ] sau ''
	
- analiză preliminară pentru a verifica dacă a treia coloană conține cel puțin o valoare
local hasScore = false
local rowNum = 0
în timp ce adevărații
local startIndex = rowNum * 3
echipa locală = args [ startIndex + 2 ]
scor local = args [ startIndex + 3 ]
dacă nu echipă, atunci sfârșitul pauzei
dacă scorul apoi hasScore = true final pauză
rowNum = rowNum + 1
Sfârșit
	
local res = "
rowNum = 0
în timp ce adevărații
local startIndex = rowNum * 3
interval local = args [ startIndex + 1 ] sau ''
echipa locală = args [ startIndex + 2 ]
scor local = args [ startIndex + 3 ] sau ''
		
_ local , spaceCount = string.gsub ( scor , "" , "" )
dacă spaceCount <= 1 atunci scor = makeTag ( 'span' , scor , 'class = "nowrap"' ) sfârșit
		
dacă nu echipă, atunci sfârșitul pauzei
		
dacă sport ~ = '' atunci
an local = getYearFromRange ( interval )
local cleanedTeam , matchedPatterns = unformat ( echipă )
			
cadru local = mw . getCurrentFrame ()
- apel securizat pentru a verifica existența șablonului
succes local , rezultat = pcall ( frame . expandTemplate , frame , {
title = string.format ( „Șablon:% s% s” , sport , cleanedTeam ),
args = { pos , year }
})
dacă succesul, atunci echipa = reformatează ( rezultat , matchedPatterns ) se termină
Sfârșit
		
range_cell local = makeTd ( range )
local team_cell = makeTd ( echipa , nu hasScore și 'colspan = "2"' sau '' )
local score_cell = hasScore și makeTd ( scor , sport : lower () == 'rugby' și 'align = "right"' sau '' ) sau ''
conținut local = range_cell .. team_cell .. score_cell
		
local rowStyle = 'style = "% s"'
dacă sport : jos () == 'rugby'
apoi rowStyle = rowStyle : format ( 'background:' .. ( rowNum % 2 == 1 și '# F6FCFC' sau '#FFF' ) .. '; font-size: 90%;' )
else rowStyle = rowStyle : format ( 'background: #FFF;' )
Sfârșit
	
res = res .. makeTag ( 'tr' , content , rowStyle )
		
rowNum = rowNum + 1
Sfârșit
	
întoarce res
Sfârșit

retur p