Discussioni modulo:String
Infobox
Quando la lista della funzione arraytostring è impostata su "infobox", propongo di sostituire il metodo <UL><LI></LI></UL> con qualcosa di più semplice — come un pallino nero • a capo — per evitare che si occupi troppo spazio per riga in tabelle da soli 300px come quelle dei template sinottici.--Sakretsu (炸裂) 19:48, 3 mar 2015 (CET)
- Non sarebbe più pulito fare una versione con css modificato delle liste
<li>…</li>
da mettere nel foglio di stile globale e richiamarla ?--Moroboshi scrivimi 22:34, 3 mar 2015 (CET)
- Se possibile sì, sarebbe meglio.--Sakretsu (炸裂) 22:41, 3 mar 2015 (CET)
- Se è possibile, anche mettere direttamente nella classe "sinottico" uno stile compatto per le liste. Così si avrebbe dappertutto indipendentemente se sono liste fatte con arraytostring o a mano. --Bultro (m) 22:50, 3 mar 2015 (CET)
- Un primo test di fattibilità - però se qualcuno con più esperienza in css di me ci desse un'occhiata lo preferirei.--Moroboshi scrivimi 21:34, 4 mar 2015 (CET)
- Se è possibile, anche mettere direttamente nella classe "sinottico" uno stile compatto per le liste. Così si avrebbe dappertutto indipendentemente se sono liste fatte con arraytostring o a mano. --Bultro (m) 22:50, 3 mar 2015 (CET)
Liste non ordinate compatte | |
---|---|
Unordered list standard |
|
Unordered list "compattata" |
|
Senza unordered list usando • e <br />
|
• elemento 1 • elemento 2 • elemento 3 • elemento 4 occupa più di una riga |
- Neanch'io sono esperto di CSS, ma la proprietà per cambiare il pallino dovrebbe essere list-style-image. Non posso fare una prova al volo perché le proprietà con immagini non funzionano in linea. La skin Monobook ad esempio usa File:Bullet.png, Vector usa File:Vector-bullet-icon.png, qui potremmo usare File:Middot.png --Bultro (m) 15:19, 5 mar 2015 (CET)
Ho fatto un po' di prove e secondo me può andar bene aggiungere questo al CSS:
.sinottico ul { padding: 0px; margin: 0 0 0 1em; }
Potete provare inserendolo nel vostro CSS personale. L'immagine del pallino mi pare che non cambi nulla sullo spazio occupato, perciò tanto vale lasciare quella standard, comunque per cambiarla basterebbe aggiungere
list-style-image: url(//upload.wikimedia.org/wikipedia/commons/d/da/Middot.png);
--Bultro (m) 14:07, 12 mar 2015 (CET)
- Purtroppo con le immagini non credo che si possa fare di meglio. Altrimenti si finisce per lasciare più spazio a destra che a sinistra del pallino. Comunque per me va bene, già è un piccolo miglioramento.--Sakretsu (炸裂) 00:20, 13 mar 2015 (CET)
arraytostring
Potrebbe essere utile avere sempre a disposizione, sotto forma di un $qualcosa, anche il numero dell'iterazione in corso (l'indice del "for", per intenderci). Al momento in Template:Box successione mi sarebbe utile per fare tutte quelle chiamate a {{Box successione/Altro}}, che necessitano del parametro N --Bultro (m) 13:02, 4 giu 2015 (CEST)
- Andrebbe bene se si usa l'n+1 parametro ? ho messo un test in sandbox, eventualmente lo carico stasera. {{Utente:Moroboshi/test|A|B|C}}
Niente $index, obbligatori=5
Con $index, nobbligatori=5
0: , 1: , 2: , 3: , 4: , 5:
--Moroboshi scrivimi 13:31, 4 giu 2015 (CEST)
- Certo; sarebbe più pratico $0 (così è sempre lo stesso), ma se è troppo complicato non fa niente --Bultro (m) 15:43, 4 giu 2015 (CEST)
- Sarebbe la cosa ideale, ma arraytostring si appoggia a una funzione della libreria scribunto che replica il funzionamento dei messaggi di mediawiki e a cui viene passato il messaggio (con dentro i vari marcatori $1, $2, ecc...) e una lista di parametri che vanno a sostituire i marcatori per cui non è possibile usare un marcatore $0 (Per convenzione in Lua le liste sono numerate a partire da 1). In alternativa si potrebbe definire un valore che renda il parametro par uguale al contatore, qualcosa del tipo
par2=$index
e nel codice del messaggio $2 verrebbe sostituito dall'indice - avrebbe anche il vantaggio di essere più esplicita.--Moroboshi scrivimi 06:06, 5 giu 2015 (CEST)- Si, è meglio. Magari in futuro ci viene in mente qualche altro parametro speciale --Bultro (m) 12:38, 5 giu 2015 (CEST)
- Sarebbe la cosa ideale, ma arraytostring si appoggia a una funzione della libreria scribunto che replica il funzionamento dei messaggi di mediawiki e a cui viene passato il messaggio (con dentro i vari marcatori $1, $2, ecc...) e una lista di parametri che vanno a sostituire i marcatori per cui non è possibile usare un marcatore $0 (Per convenzione in Lua le liste sono numerate a partire da 1). In alternativa si potrebbe definire un valore che renda il parametro par uguale al contatore, qualcosa del tipo
- Certo; sarebbe più pratico $0 (così è sempre lo stesso), ma se è troppo complicato non fa niente --Bultro (m) 15:43, 4 giu 2015 (CEST)
Fatto Ho aggiornato il modulo.--Moroboshi scrivimi 19:59, 5 giu 2015 (CEST)
Altra cosa: ad es. in Template:Rosa nazionale di calcio, nella parte ripetitiva possono esserci dei "buchi", ad esempio si possono valorizzare solo n4, n7, n9... Attualmente arraytostring non lo può gestire perché al primo buco giustamente si ferma; vale la pena di aggiungere anche un'opzione per non fermarsi? Ovviamente deve essere valorizzato anche Nmax sennò andrebbe avanti all'infinito. --Bultro (m) 17:02, 30 giu 2015 (CEST)
- Forse la cosa più riutilizzabile e più semplice sarebbe aggiungere un parametro "Nobbligatori", per far sì che le prime N iterazioni vengano fatte sempre (in pratica: if index <= Nobbl then found = true) --Bultro (m) 12:24, 2 lug 2015 (CEST)
- Sì direi che è la più semplice e non è il solo posto dovre potrebbe essere utile. Stasera lo implemento.--Moroboshi scrivimi 13:43, 2 lug 2015 (CEST)
- Ho aggiunto un parametro nobbligatori, comunque la sequenza viene valutata solo fino a nmax (in caso di conflitto vince nmax). Ho anche corretto il template in modo che accetti anche nmin in minuscolo (mi sono accorto che era incosistente accettava NMin e nmax, adesso accetta anche nmin è ho corretto la documentazione per indicare solo questa possibilità.--Moroboshi scrivimi 22:33, 2 lug 2015 (CEST)
- Ho usato varie volte Nobbligatori senza problemi, ma adesso non riesco a capire perché non funziona in t:Utente/Sandbox (per ora uguale a t:Utente, ma con arraytostring). Non è contento di usare solo $index? Ho provato anche a metterci un par2 fittizio ma niente. --Bultro (m) 23:04, 13 ago 2015 (CEST)
- I messaggi vengono visualizzati solo se un parametro effettivo viene valorizzato, se $index è l'unico parametro non genera niente, altrimenti per esempio in {{Box successione}} genererebbe delle righe vuote anche quando i parametri non sono valorizzati. Si potrebbe aggiungere un parametro per cambiare il comportamento.--Moroboshi scrivimi 05:56, 14 ago 2015 (CEST)
- Non mi torna... Nobbligatori è fatto apposta per processare anche quando i parametri non sono valorizzati. In t:Rosa nazionale di calcio possono mancare degli n, ma lui va avanti lo stesso, è l'if che decide cosa stampare o non stampare. Non penso sia questione di aggiungere altri parametri, dovrebbe essere sempre così. Questi gli usi attuali; non ho capito perché l'hai usato in T:Videogioco, se i parametri sono stati riordinati via bot non serve più --Bultro (m) 12:33, 14 ago 2015 (CEST)
- In generale non mi piace eseguire chiamate a template non necessarie e salvo un caso particolare come quello di {{Utente}} in generale il messaggio non deve comparire se non sono valorizzati parametri utente. In videogioco l'ho usato perchè fino a che non li avessi riordinati con il bot le voci non sarebbero funzionati correttamente, adesso l'ho aggiornato rimuovendo il controllo.--Moroboshi scrivimi 13:26, 14 ago 2015 (CEST)
- Usare Nobbligatori è di per sé un caso raro, ma tra questi non è raro dover processare tutto. Ad esempio se devo controllare che N parametri siano compilati, è proprio quando non è compilato che deve partire il messaggio.
- Se proprio vuoi aggiungere un parametro, propongo uno per specificare qual è la serie necessaria, ad es. richiesto=2 vorrebbe dire che par2 è necessario per effettuare l'iterazione. Tornerebbe utile a prescindere da Nobbligatori, quando ci sono più serie, ad es. in t:personaggio è necessario "autore #", ma attualmente va erroneamente avanti anche se è compilato soltanto "autore # nota". Se c'è Nobbligatori non ferma il ciclo ma può evitare la singola iterazione. --Bultro (m) 15:15, 14 ago 2015 (CEST)
- In generale non mi piace eseguire chiamate a template non necessarie e salvo un caso particolare come quello di {{Utente}} in generale il messaggio non deve comparire se non sono valorizzati parametri utente. In videogioco l'ho usato perchè fino a che non li avessi riordinati con il bot le voci non sarebbero funzionati correttamente, adesso l'ho aggiornato rimuovendo il controllo.--Moroboshi scrivimi 13:26, 14 ago 2015 (CEST)
- Non mi torna... Nobbligatori è fatto apposta per processare anche quando i parametri non sono valorizzati. In t:Rosa nazionale di calcio possono mancare degli n, ma lui va avanti lo stesso, è l'if che decide cosa stampare o non stampare. Non penso sia questione di aggiungere altri parametri, dovrebbe essere sempre così. Questi gli usi attuali; non ho capito perché l'hai usato in T:Videogioco, se i parametri sono stati riordinati via bot non serve più --Bultro (m) 12:33, 14 ago 2015 (CEST)
- I messaggi vengono visualizzati solo se un parametro effettivo viene valorizzato, se $index è l'unico parametro non genera niente, altrimenti per esempio in {{Box successione}} genererebbe delle righe vuote anche quando i parametri non sono valorizzati. Si potrebbe aggiungere un parametro per cambiare il comportamento.--Moroboshi scrivimi 05:56, 14 ago 2015 (CEST)
- Ho usato varie volte Nobbligatori senza problemi, ma adesso non riesco a capire perché non funziona in t:Utente/Sandbox (per ora uguale a t:Utente, ma con arraytostring). Non è contento di usare solo $index? Ho provato anche a metterci un par2 fittizio ma niente. --Bultro (m) 23:04, 13 ago 2015 (CEST)
- Ho aggiunto un parametro nobbligatori, comunque la sequenza viene valutata solo fino a nmax (in caso di conflitto vince nmax). Ho anche corretto il template in modo che accetti anche nmin in minuscolo (mi sono accorto che era incosistente accettava NMin e nmax, adesso accetta anche nmin è ho corretto la documentazione per indicare solo questa possibilità.--Moroboshi scrivimi 22:33, 2 lug 2015 (CEST)
- Sì direi che è la più semplice e non è il solo posto dovre potrebbe essere utile. Stasera lo implemento.--Moroboshi scrivimi 13:43, 2 lug 2015 (CEST)
[← Rientro] Direi che posso provare a fare in questa maniera:
- Se NObbligatorie NMax non sono valorizzati allora processare tutti i parametri anche se questi è solo $index
- Se NObbligatori e NMax non sono valorizzati allora continuare a comportarmi in questa maniera (non processare i casi in cui l'unico valorizzato sarebbe $index), in caso contrario la procedura entrebbe in loop infinito e sarebbe bloccata dal timeout che Mediawiki impone a tutti i processi dei moduli Lua - e in effetti era questo il motivo per cui al momento la funzione non processa i casi in cui non siano valorizzati parametri inseriti dall'utente)
- Rimane il caso NObbligatori non valorizzato e NMax valorizzato, in questo caso non entrebbe in loop, ma preferisco comportarmi come nel caso 2.--Moroboshi scrivimi 17:54, 18 ago 2015 (CEST)
- Mi sa che hai messo un "non" di troppo.
- Io comunque la vedevo più semplice: Se NObbligatori è valorizzato, processare a prescindere dai parametri, ma ovviamente solo finché l'indice è <= NObbligatori.
- In tutti gli altri casi, comportamento normale. Il loop infinito è impossibile --Bultro (m) 16:02, 19 ago 2015 (CEST)
- Ho perso un po' di tempo perchè nei test avevo invertito la condizione da controllare e ovviamente non capivo cosa non andava. Adesso dovrebbe funzionare come richiesto.--Moroboshi scrivimi 12:26, 23 ago 2015 (CEST)
- Ok! Per la cronaca, in t:Utente avevo già risolto in un altro modo, ma non era il massimo dell'eleganza --Bultro (m) 14:33, 23 ago 2015 (CEST)
- Ho perso un po' di tempo perchè nei test avevo invertito la condizione da controllare e ovviamente non capivo cosa non andava. Adesso dovrebbe funzionare come richiesto.--Moroboshi scrivimi 12:26, 23 ago 2015 (CEST)
Manuale
Ho notato la sostituzione da parte di [@ Bultro] del verbo ritornare con restituire, eseguita anche altrove. Questi cambiamenti non mi vedono d'accordo, "ritornare un valore" è tanto corretto quanto "restituire un valore", come può dimostrare una ricerca su testi di informatica. Che si usino indifferentemente, senza dover sostituire l'uno con l'altro, i problemi di terminologia tecnica da correggere sono ben altri. --Rotpunkt (msg) 06:27, 12 giu 2015 (CEST)
- Se certi testi "ritornano" i valori e "rilasciano" i programmi è un problema loro, io parlo italiano non itanglese. Se correggere ti sembra una perdita di tempo, lo è ancora di più mettersi a discutere... --Bultro (m) 14:27, 12 giu 2015 (CEST)
- In che senso "itanglese"? innanzitutto si dice che una funzione ha un "valore di ritorno" e non "valore restuito" o altro, quindi già "ritorno" è un termine ufficiale. --Rotpunkt (msg) 14:39, 12 giu 2015 (CEST)
- "Ritornare" non è sbagliato, ma siccome stiamo parlando di un manuale, probabilmente Bultro ha preferito il verbo "restituire" semplicemente perché suona meglio (vedi qui il parere del Corriere ad esempio). Alla fine, siccome entrambe le forme sono corrette, preferire quella più elegante non credo che sia poi così un male. Poi certo, considerare la prima proprio sbagliata sarebbe eccessivo, ma non credo che siamo arrivati fino a quel punto.--Sakretsu (炸裂) 15:21, 12 giu 2015 (CEST)
- @Sakretsu ma non possiamo mica prendere un dizionario generalista per una definizione di un termine tecnico di programmazione. Che il valore che una funzione fornisce sia detto "valore di ritorno" non c'è alcun dubbio: vedi valore di ritorno. Da qui poi tutte le variazioni ritorna un valore, valore ritornato. Tutto il resto sono discussioni che lasciano il tempo che trovano perché non basate su fonti e quindi sulla realtà dei fatti. --Rotpunkt (msg) 15:32, 12 giu 2015 (CEST)
- Sì, ma ho specificato che qui stiamo parlando di un manuale, scritto anche e soprattutto per gli utenti che non se ne intendono di programmazione. È normale che una differenza del genere a te non possa sfuggire, ma per gli altri utenti la forma più elegante rimane restituire, che in questo contesto mi pare di aver capito sia altrettanto corretta. Comunque per me la questione è ininfluente, trovo semplicemente la preferenza di Bultro comprensibile.--Sakretsu (炸裂) 15:58, 12 giu 2015 (CEST)
- @Sakretsu bisogna dire che "avere una preferenza", e dire << Se certi testi "ritornano" i valori e "rilasciano" i programmi è un problema loro >> non è la stessa cosa. E chi legge ovviamente ne trae un certo senso. --Rotpunkt (msg) 16:06, 12 giu 2015 (CEST)
- Sì, ma ho specificato che qui stiamo parlando di un manuale, scritto anche e soprattutto per gli utenti che non se ne intendono di programmazione. È normale che una differenza del genere a te non possa sfuggire, ma per gli altri utenti la forma più elegante rimane restituire, che in questo contesto mi pare di aver capito sia altrettanto corretta. Comunque per me la questione è ininfluente, trovo semplicemente la preferenza di Bultro comprensibile.--Sakretsu (炸裂) 15:58, 12 giu 2015 (CEST)
- @Sakretsu ma non possiamo mica prendere un dizionario generalista per una definizione di un termine tecnico di programmazione. Che il valore che una funzione fornisce sia detto "valore di ritorno" non c'è alcun dubbio: vedi valore di ritorno. Da qui poi tutte le variazioni ritorna un valore, valore ritornato. Tutto il resto sono discussioni che lasciano il tempo che trovano perché non basate su fonti e quindi sulla realtà dei fatti. --Rotpunkt (msg) 15:32, 12 giu 2015 (CEST)
- "Ritornare" non è sbagliato, ma siccome stiamo parlando di un manuale, probabilmente Bultro ha preferito il verbo "restituire" semplicemente perché suona meglio (vedi qui il parere del Corriere ad esempio). Alla fine, siccome entrambe le forme sono corrette, preferire quella più elegante non credo che sia poi così un male. Poi certo, considerare la prima proprio sbagliata sarebbe eccessivo, ma non credo che siamo arrivati fino a quel punto.--Sakretsu (炸裂) 15:21, 12 giu 2015 (CEST)
- In che senso "itanglese"? innanzitutto si dice che una funzione ha un "valore di ritorno" e non "valore restuito" o altro, quindi già "ritorno" è un termine ufficiale. --Rotpunkt (msg) 14:39, 12 giu 2015 (CEST)
Segni diacritici
Per le chiavi di ordinamento nelle categorie potrebbe essere utile una funzione che toglie i segni diacritici, ad es. trasformando bäbá in baba. Mi pare che esista anche nel PHP. Penso al Bio, ma probabilmente servirà anche altrove --Bultro (m) 19:20, 16 giu 2015 (CEST)
- Pensavo fosse una cosa fatta automaticamente dal software mediawiki, ma ho appena testato con John le Carré e in effetti prima di mettere il ForzaOrdinamento nel bio veniva messo dopo Hereward Carrington e Leonora Carrington.--Moroboshi scrivimi 20:46, 16 giu 2015 (CEST)
- Magari lo facesse il software, ma mi sa che è una di quelle cose che svilupperanno l'Anno del Mai. La richiesta phab:T2164 risale al 2004, poi spezzata in phab:T32672, phab:T32673, phab:T32674, phab:T32675.
- Se ho ben capito il T32674, il problema dell'ordinamento c'è anche nelle tabelle sortable, ma quello intanto si può sistemare a mano con un'impostazione di Common.js --Bultro (m) 10:31, 17 giu 2015 (CEST)
- Una cosa del genere mi servirebbe anche per togliere i codici %XX dagli url. In generale, se si vuole sostituire una serie di stringhe con un'altra serie di stringhe, c'è un metodo efficiente o bisogna fare tanti gsub quante sono le coppie di valori? --Bultro (m) 15:53, 3 dic 2015 (CET)
- Per le codifiche percentuali ci sono un paio di funzioni lua mw.uri.encode e mw.uri.encode). Si potrebbero aggiungere un paio di funzioni che le richiamino (ma ho il sospetto che ci sia già qualcosa del genere nel linguaggio mediawiki). Ma per i segni diacritici non mi vengono in mente metodi che non siano sequenze di gsub e sono molto restio a implementare una cosa del genere.--Moroboshi scrivimi 16:15, 3 dic 2015 (CET)
- In Mediawiki esiste urlencode ma non urldecode.
- Per i segni diacritici, essendo corrispondenze 1:1 tra caratteri, si dovrebbe poter fare con relativamente pochi gsub, dal momento che si possono usare i pattern: [àäâă...] viene sostituito da "a" in un unico gsub. --Bultro (m) 17:07, 3 dic 2015 (CET)
- Per le codifiche percentuali ci sono un paio di funzioni lua mw.uri.encode e mw.uri.encode). Si potrebbero aggiungere un paio di funzioni che le richiamino (ma ho il sospetto che ci sia già qualcosa del genere nel linguaggio mediawiki). Ma per i segni diacritici non mi vengono in mente metodi che non siano sequenze di gsub e sono molto restio a implementare una cosa del genere.--Moroboshi scrivimi 16:15, 3 dic 2015 (CET)
- Una cosa del genere mi servirebbe anche per togliere i codici %XX dagli url. In generale, se si vuole sostituire una serie di stringhe con un'altra serie di stringhe, c'è un metodo efficiente o bisogna fare tanti gsub quante sono le coppie di valori? --Bultro (m) 15:53, 3 dic 2015 (CET)