Discussioni modulo:Font to span

Ultimo commento: 7 anni fa, lasciato da Daimona Eaytoy in merito all'argomento Modifiche

Modifiche

modifica

Ciao, così al volo la riga

if size~=nil and string.match(size, "^[1-7]$") then size=stab[size] end

puoi semplificarla in:

if size~=nil and size = stab[size] or size end

Se trova il valore size nella tabella allora assegna stab[size], se non lo trova allora stab[size] ritorna nil e allora viene valutata la seconda parte dell'istruzione e riassegna. ha il vantaggio che se modifichi la tabella stab non devi modificare il confronto per controllare se la chiave è valida. Stasera butto un occhio se mi viene in mente altro.--Moroboshi scrivimi 14:14, 4 set 2017 (CEST)Rispondi

[@ Moroboshi] Ciao, grazie mille per l'aiuto. Credo di aver capito l'idea e provvedo con la correzione. L'importante è che vada a ricercare il valore nella tabella solo se size è un numero da 1 a 7, che non sia seguito da nulla: ad esempio se fosse 5 px dovrebbe lasciarlo com'è; ma a quanto mi sembra di capire dovrebbe comportarsi esattamente così. A margine: la tabella in teoria non va più modificata, il font accetta come size un numero da 1 a 7 e le dimensioni corrispondenti in px sono quelle, frutto di test super-scientifici effettuati in sandbox (confronto con occhiometro). Grazie ancora --Daimona Eaytoy (Scrivimi!) 14:21, 4 set 2017 (CEST)Rispondi
Esatto si basa su due elementi:
  • quando cerchi una chiave in una tabella Lua ritorna nil se non la trova,
  • Le operazioni logiche sono valutate da sx a dx e sono lazy, cioè una volta che la funzione è sicuramente vera o sicuramente falsa ritorna il valore dell'ultimo operando.
Nota: in Lua solo nil e false sono falsi tutto il resto è vero. Significa anche che questo trucco non funziona se la tabella può contenere valori false, ma non è questo il caso.
Quindi se il primo operando dell'or è vero non procede oltre e ritorna il valore dell'operando (in questo caso stab[size]), se è falso prosegue con l'or e ritorna la seconda parte dell'or (in questo caso il valore originale di size). Si deve comunque fare il controllo if size~=nil perchè se size fosse nil allora tentare stab[size] genererebbe un errore.
C'è anche una libreria (mw.html) per semplificare la generazione di codice html, ma dovrei vedere come applicarla a questo caso.--Moroboshi scrivimi 14:46, 4 set 2017 (CEST)Rispondi
Ottimo, grazie mille, vado subito di semplificazione. Purtroppo in lua non sono ferrato e questo costrutto non lo conoscevo. Non sapevo neanche dell'esistenza della libreria, che così a occhio mi sembra si possa usare in fase di ricostruzione dello span per evitare di gestire a mano virgolette, punti e virgola e compagnia. Grazie ancora, --Daimona Eaytoy (Scrivimi!) 14:54, 4 set 2017 (CEST) P.S. [@ Moroboshi] Andando ad implementare la tua correzione mi restituisce un errore, che ho corretto sostituendo and con then, supponendo che l'intenzione fosse quella. Se così non fosse correggi pure da solo senza problemi.--Daimona Eaytoy (Scrivimi!) 14:56, 4 set 2017 (CEST)Rispondi
Ritorna alla pagina "Font to span".