Discussioni template:Dato

Da Wikisource.
Jump to navigation Jump to search

Dubbio[modifica]

@Candalua E' pensabile luizzare il template? --Alex brollo (disc.) 10:56, 29 mar 2016 (CEST)Rispondi[rispondi]

@Alex brollo vorresti leggere la pagina, parsarla ed estrarre il dato? Se riesci ed è più performante di section, ben venga... Can da Lua (disc.) 12:02, 29 mar 2016 (CEST)Rispondi[rispondi]
Vedi qui:
Questo già fa il parsing di 2 pagine, quella chiamata e la pagina Indice correlata, ignorando le Aree dati; il problema è che luizzando Dato si potrebbe "scollegare" dall'area dati vari template e pagine qua e là. Sarebbe comunque una cosa provvisoria e parziale. Temo che la via maestra per vedere cosa succede rinunciando alle aree dati sia bloccare per un po' lo javascript che crea le aree dati e vedere che disastro succede. --Alex brollo (disc.) 12:23, 29 mar 2016 (CEST)Rispondi[rispondi]
@Candalua Fermo restando che MediaWiki:Areadati.js genera l'area dati per ns0, Autore e Discussioni, e quindi va emulato in Lua dopo aver cambiato le mutande (mutatis mutandis), quale script prepara l'area dati per Indice? Non lo trovo.... :-( --Alex brollo (disc.) 19:29, 29 mar 2016 (CEST)Rispondi[rispondi]
@Alex brollo è fatto da proofreadpage_fill_index_IT() nel Common.js. Comunque aspetterei a bloccare gli script, cerchiamo prima di usare bene il parsing lua (che dovrebbe essere più rigoroso: dovrebbe parsare tutti e soli gli argomenti dei template che vogliamo, nella forma |parametro=valore, e non altre cose potenzialmente poco affidabili) Can da Lua (disc.) 14:00, 30 mar 2016 (CEST)Rispondi[rispondi]
@Candalua Certo, non è il momento di bloccare niente. Ok per il miglioramento del parsing, si può procedere in due tappe, prima l'enucleazione del template (le regex di Lua lo permettono, risolvono le strutture annidate) e poi l'isolamento delle coppie parametri-valori. Forse si riesce a scrivere (o magari a trovare fatta...) una funzione generale tipo parseTemplate(). --Alex brollo (disc.) 14:16, 30 mar 2016 (CEST)Rispondi[rispondi]

@Alex brollo l'unica cosa che ho trovato finora è questa api che parsa il wikitext e costruisce l'albero xml della pagina, ma non ho ancora trovato niente in Lua, solo funzioni che "espandono" il wikitext ma non sembrano scomporlo nelle sue componenti:

https://en.wikipedia.org/w/api.php?action=parse&text=testo{{Intest|nome=pippo|cognome={{bold|pluto}}}}altrotesto{{Center}}&contentmodel=wikitext&prop=parsetree&format=json

che produce:

{"parse":{"title":"API","pageid":27697087,"parsetree":{"*":"<root>testo<template><title>Intest</title><part><name>nome</name>=<value>pippo</value></part><part><name>cognome</name>=<value><template><title>bold</title><part><name index=\"1\"/><value>pluto</value></part></template></value></part></template>altrotesto<template><title>Center</title></template></root>"}}}

Can da Lua (disc.) 18:20, 30 mar 2016 (CEST)Rispondi[rispondi]

Boh, proverò a "tradurre in Lua" parseTemplate(), in fondo le regex Lua non sono poi così diverse dalle usuali python/javascript (anzi, per certi versi sono migliori: non serve find_stringa() nemmeno per il terribile caso delle strutture annidate). Alex brollo (disc.) 18:29, 30 mar 2016 (CEST)Rispondi[rispondi]
@Candalua Sono a metà dell'opera, adesso ho una routine Lua che spezzetta un template nei suoi parametri splittando sui caratteri | giusti (ignorando quelli all'interno di link e template, il che non è uno scherzo...), manca il passo finale di spezzare ogni elemento nella coppia [chiave|numero d'ordine]=valore; ma per luizzare Dato, che deve solo estrarre un certo parametro da un certo template, emettendo un lamento se non trova il template o non trova il parametro, penso si faccia prima a cercare il parametro dentro il template e fine. Il "parsatore" Lua integrale (che trasformebbe qualsiasi template con qualsiasi parametro in un oggetto-table key-value) possiamo studiarlo con più calma per usarlo in casi più complessi e generali (IMHO). Alex brollo (disc.) 23:42, 30 mar 2016 (CEST)Rispondi[rispondi]