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

Modul: Infobox

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

Modul Lua pentru gestionarea funcțiilor {{ Infobox }}


 - Modul pentru implementarea funcțiilor infobox
local p = {} - pentru exportul funcțiilor modulului

local args = {} - variabilă care conține argumentele transmise șablonului
origArg-uri locale
local root - rădăcină de marcare html
dump local = {}

Lista de verificare a funcției locale ( valoare )
- Permite software-ului Mediawiki să gestioneze liste # sau *
local c = mw . ustring . sub ( valoare , 1 , 1 )
dacă c == '#' sau c == '*' atunci
value = '<div> \ n ' .. valoare .. ' \ n </div>'
Sfârșit
returnează valoarea .. ' \ n '
Sfârșit

funcția locală getArgNums (...)
- Returnează o listă care conține sufixul numeric al tuturor argumentelor
- începând cu prefixul "prefix"
- De exemplu, dacă „Value1, Value2 și Value4” sunt setate în lista de argumente
- va restabili lista [1, 2, 4]
prefixe locale = {...}
numere locale = {}
pentru k , _ în perechi ( args ) do
local num = zero
pentru _ , candidat în ipairs ( prefixuri ) do
num = ( '' .. k ): match ( '^' .. candidate .. '(% d +) $' )
if num ~ = nil then break end
Sfârșit
dacă num atunci table.insert ( nums , ToNumber (num)) se termină
Sfârșit
table.sort ( nums )
întoarce nums
Sfârșit

funcție locală addRow ( rowArgs )
- Adăugați un rând la masă
- Dacă rowArgs.group nu este nul, îl consideră ca un rând de antet de grup
- și ignoră orice valoare a rowArgs.value
dacă rowArgs . apoi grup
rădăcină
: etichetă ( 'tr' )
: addClass ( "synoptic_division" )
: etichetă ( „th” )
: attr ( „colspan” , 2 )
: cssText ( rowArgs . style sau args . GroupStyle sau '' )
: wikitext ( rowArgs . grup )
- În caz contrar, dacă rowArgs.value nu este nul, introduce un rând de date, verificând
- dacă există sau nu antetul
elseif rowArgs . apoi valoare
rând local = root : tag ( 'tr' )
local dataCell
dacă rowArgs . nume atunci
rând
: etichetă ( „th” )
: cssText ( argumente . StyleName sau '' )
: Wikitext (rowArgs. Nume)
dataCell = rând : etichetă ( 'td' )
altceva
dataCell = rând : etichetă ( 'td' )
: addClass ( ' central_text_synoptic ' )
: attr ( „colspan” , 2 )
Sfârșit
dataCell
: addClass ( rowArgs . class or '' )
: CssText (. Args StyleValue sau '')
: wikitext ( checkList ( rowArgs . value ))
Sfârșit
Sfârșit

funcție locală renderTitle ()
local suptitle = mw . html . create ( '' )
dacă arg . Deasupra titlului atunci
suptitlu
: tag ( „span” )
: addClass ( 'synoptic_subtitle' )
: CssText (. Args StyleOverTitle sau '')
: wikitext ( args . AboveTitle )
: făcut ()
: tag ( 'br' ): done ()
Sfârșit
subtitrare locală = mw . html . create ( '' )
dacă arg . Subtitrare atunci
subtitlu
: tag ( 'br' ): done ()
: tag ( „span” )
: addClass ( 'synoptic_subtitle' )
: CssText (. Args SubTitleStyle sau '')
: wikitext ( arg . Subtitrare )
Sfârșit
dacă arg . Titlul Est atunci
rădăcină
: etichetă ( „subtitrare” )
: addClass ( 'synoptic_head' )
: CssText (. Args EastTitleStyle sau '')
: nod ( suptitlu )
: wikitext ( arg . titlul estic )
: nod ( subtitrare )
elseif arg . Titlul Int atunci
rădăcină
: etichetă ( 'tr' )
: addClass ( 'synoptic_head' )
: etichetă ( „th” )
: attr ( 'colspan' , '2' )
: nod ( suptitlu )
: CssText (. Args StyleTitoloInt sau '')
: wikitext ( argumente . TitleInt )
: nod ( subtitrare )
Sfârșit
Sfârșit

funcție locală renderImage ()
dacă nu arg . Imaginea apoi revenirea la sfârșit
local image_cell = mw . html . create ( 'td' )
imagine_celula
: addClass ( 'synoptic_central_text' .. ( args . ClasseImmagine sau '' ))
: attr ( 'colspan' , '2' )
: cssText ( argumente . ImageStyle sau '' )
: wikitext ( arg . Imagine )
dacă arg . Subtitrare atunci
imagine_celulă
: tag ( 'br' , { selfClosing = true })
: făcut ()
: tag ( „span” )
: CssText (. Args CaptionStyle sau '')
: wikitext ( arg . subtitrare )
Sfârșit
root : tag ( 'tr' ): nod ( image_cell )
Sfârșit


funcție locală renderRows ()
local rownums = getArgNums ( 'Value' , 'OptionalGroup' , 'Group' )
pentru k , num in ipairs ( rownums ) do
local skip = false
if args [ 'OptionalGroup' .. num ] ~ = zero atunci
skip = adevărat
pentru j = k + 1 , fac # rownums
if args [ 'Group' .. rownums [ j ]] ~ = nil or args [ 'GroupOptional' .. rownums [ j ]] ~ = nil then break end
if args [ 'Value' .. rownums [ j ]] ~ = zero atunci
skip = false
pauză
Sfârșit
Sfârșit
Sfârșit
if not skip and args [ 'OptionalGroup' .. num ] ~ = '$ end' atunci
addRow ({
group = args [ 'OptionalGroup' .. num ] sau args [ 'Group' .. num ],
name = args [ 'Name' .. num ],
value = args [ 'Value' .. num ],
class = args [ 'Class' .. num ],
style = args [ ' Style Group' .. num ]
})
Sfârșit
Sfârșit
Sfârșit

funcție locală renderLastRow ()
dacă nu arg . Ultima, apoi întoarcerea sfârșit
rădăcină
: etichetă ( 'tr' )
: etichetă ( 'td' )
: attr ( 'colspan' , '2' )
: addClass ( 'synoptic_foot' )
: CssText (. Args StyleLast sau '')
: wikitext ( args . Ultima )
: newline ()
Sfârșit

funcție locală renderNavBar ()
dacă nu arg . TemplateName apoi returnează sfârșitul
rădăcină
: etichetă ( 'tr' )
: etichetă ( 'td' )
: addClass ( 'synoptic_piede2 noprint metadate nomobile' )
: attr ( 'colspan' , '2' )
: Wikitext (mw. GetCurrentFrame (): expandTemplate ({
title = 'Link sinoptic' ,
args = args . LinkWikidata și
{ arg . TemplateName } sau
{ arg . TemplateName , nowd = 1 }
}))
Sfârșit

funcție locală _infobox ()
- Creează arborele html care reprezintă tabelul sinoptic și returnează marcajul
dacă arg . CreaTable == „nu” atunci
rădăcină = mw . html . create ( '' )
altceva
rădăcină = mw . html . create ( 'tabel' )
rădăcină
: addClass ( 'sinoptic' )
: CssText (. Args TableStyle sau '')
: attr ( „rezumat” , argumente . Rezumat sau „Tabel sinoptic care rezumă datele principale ale subiectului” )
Sfârșit
renderTitle ()
renderImage ()
renderRows ()
renderLastRow ()
renderNavBar ()
întoarceți tostring ( rădăcină )
Sfârșit

funcție locală preprocessSingleArg ( argName )
- Dacă argumentul există și nu este un șir gol, îl adaugă în tabelul de argumente
- Argumentele egale cu șirul gol sunt tratate ca nule conform comportamentului
- șablonul anterior {{Infobox}}
dacă origArgs [ argName ] și origArgs [ argName ] ~ = '' atunci
args [ argName ] = origArgs [ argName ]
Sfârșit
Sfârșit

funcție locală preprocessArgs ( prefixTable , step )
- Atribuiți parametrii cu date prefix la tabelul args, în ordine și în funcție de o mulțime de
- dimensiunea specificată. Tabelul prefix ar trebui să fie un tablou care conține tabele, fiecare
- din care cu două câmpuri posibile, un șir „prefix” și un tabel „dependențe”. Acolo
- funcția examinează toți parametrii care conțin șirul de prefix, dar îi examinează pe cei din
- tabel dependent doar dacă prefixul de care depind este prezent și nu nul.
dacă tastați ( prefixTable ) ~ = 'tabel' atunci
eroare ( "Valoarea untable găsită în tabelul de prefix" , 2 )
Sfârșit
dacă tastați ( pas ) ~ = 'număr' atunci
eroare ( „Tipul de pas nevalid” , 2 )
Sfârșit

- Obține argumente fără sufix numeric și verifică intrările incorecte.
pentru i , v în ipairs ( prefixTable ) do
dacă tastați ( v ) ~ = 'tabel' sau tastați ( v . prefix ) ~ = "șir" sau ( v . depinde și tastați ( v . depinde ) ~ = 'tabel' ) atunci
error ( „Valori nevalide întâlnite pentru tabelul de prefixuri preprocessArgs” , 2 )
Sfârșit
preprocessSingleArg (v. prefix)
- Examinați parametrii dependenți numai dacă parametrul prefix este prezent și nu este nul.
dacă args [ v . prefix ] și v . depinde atunci
pentru j, dependValue in ipairs (v. depend) do
dacă tip ( dependValue ) ~ = 'șir' atunci
error ( parametru „dependent” nevalid găsit în preprocessArgs ' )
Sfârșit
preprocessSingleArg ( dependValue )
Sfârșit
Sfârșit
Sfârșit
dacă pasul == 0 atunci reveniți la sfârșit
- Extrage argumente cu un sufix numeric
local a = 1 - Variabilă contor.
local moreArgumentsExist = adevărat
în timp ce moreArgumentsExist == true do
moreArgumentsExist = false
pentru i = a , un + pas - 1 fac
pentru j , v în ipairs ( prefixTable ) do
prefixArgName locală = v. prefix .. tostring ( i )
dacă origArgs [ prefixArgName ] atunci
moreArgumentsExist = true - Adaugă o trecere dacă a fost găsit un parametru, chiar dacă este nul.
preprocessSingleArg ( prefixArgName )
Sfârșit
- Procesați tabelul angajaților dacă parametrul de care depind există și nu este nul
dacă v . depend și args [ prefixArgName ] atunci
pentru j, dependValue in ipairs (v. depend) do
local dependArgName = dependValue .. tostring (i)
preprocessSingleArg ( dependArgName )
Sfârșit
Sfârșit
Sfârșit
Sfârșit
a = a + pas
Sfârșit
Sfârșit

funcția p . infobox ( cadru )
- Dacă sunteți apelat prin #invoke, utilizați argumentele transmise șablonului de invocare.
- În caz contrar, în scopuri de testare, presupuneți că argumentele sunt transmise direct
if frame == mw . getCurrentFrame () atunci
origArgs = cadru : getParent (). argumente
altceva
origArgs = cadru . argumente
Sfârșit

- Funcțiile parser tratează șirul gol ca fiind fals, deci pentru a păstra fișierul
- comportamentul {{infobox}} toate argumentele goale nu sunt stocate
- în tabelul argumente globale, astfel încât să fie considerat fals
- Notă: args este o variabilă globală pentru modulul declarat la început
- scanează parametrii în aceeași ordine pe care a făcut-o vechiul {{infobox}}
- astfel încât orice instrucțiuni referitoare să apară în poziția și ordinea corectă. Parametrii care depind de
- alți parametri sunt procesați numai dacă parametrul este prezent, pentru a evita
- apariția referințelor fantomă în locuri neașteptate.
preprocessSingleArg ( 'TableStyle' )
preprocessArgs ({
{ prefix = 'SopraTitolo' , depend = { 'StyleSopraTitolo' }}
}, 0 )
preprocessArgs ({
{ prefix = 'EastTitle' , depend = { 'EastTitleStyle' }}
}, 0 )
preprocessArgs ({
{ prefix = 'TitleInt' , depend = { 'StyleTitoloInt' }}
}, 0 )
preprocessArgs ({
{ prefix = 'SubTitle' , depend = { 'SubTitleStyle' }}
}, 0 )
preprocessArgs ({
{ prefix = 'Image' , depend = { 'Image Class' , 'Image Style' ,
'Caption' , 'CaptionStyle' }}
}, 0 )
preprocessSingleArg ( 'GroupStyle' )
preprocessSingleArg ( 'StyleName' )
preprocessSingleArg ( 'StyleValue' )
preprocessArgs ({
{ prefix = 'Group' , depend = { 'GroupStyle' }},
{ prefix = 'GruppoOpzionale' , depend = { 'GruppoStile' }},
{ prefix = 'Value' , depend = { 'Name' , 'Class' }},
}, 50 )
preprocessSingleArg ( 'Ultima' )
preprocessSingleArg ( 'LastStyle' )
preprocessSingleArg ( 'TemplateName' )
preprocessSingleArg ( 'LinkWikidata' )
preprocessSingleArg ( 'CreaTable' )
preprocessSingleArg ( „Rezumat” )
return _infobox ()
Sfârșit

retur p