Discussioni modulo:Font to span
Ultimo commento: 7 anni fa, lasciato da Daimona Eaytoy in merito all'argomento Modifiche
Modifiche
modificaCiao, 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)
- [@ 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 fosse5 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)- 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.
- quando cerchi una chiave in una tabella Lua ritorna
- 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 disize
). Si deve comunque fare il controlloif size~=nil
perchè sesize
fosse nil allora tentarestab[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)
- 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
conthen
, 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)
- 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
- Esatto si basa su due elementi:
- [@ 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