Modulo:VociRecenti man
Il modulo legge la cache generata dal bot e restituisce una lista di voci di Wikipedia recenti, filtrate secondo i parametri passati dal template chiamante.
La cache è distribuita su più pagine wiki: Modulo:VociRecenti/Dati1, Dati2, ... DatiN.
Ogni file è un modulo Lua che restituisce una tabella con questa struttura (formato attuale, array posizionale):
return {
u = [[DD/MM/YYYY HH:MM]], -- ultimo aggiornamento
v = [[8.30]], -- versione bot
p = 1, -- numero parte
tp = 3, -- totale parti
n = 1000, -- numero voci in questa parte
d = {
{
[[titolo]],
[[timestamp_14chr]], -- es. "20260303041500"
{[[cat1]], [[cat2]], ...}, -- categorie
{ -- template
{[[NomeTemplate]], {[[param1]], [[param2]]}},
...
},
[[preview_100chr]], -- preview del testo (primi 100 caratteri)
[[move_timestamp]], -- opzionale: data spostamento da sandbox/bozze
},
...
}
}
Le stringhe usano long string Lua ([[...]], [=[...]=], ecc.) con livello di escape automatico per evitare problemi con caratteri speciali nel wikitesto. Il modulo riconosce anche il vecchio formato con keyword (titolo=..., timestamp='...', ecc.) per retrocompatibilità.
Funzione principale richiamata dal template. Legge i parametri, carica tutti i file cache (con memoizzazione: i file vengono letti una sola volta per pagina anche in presenza di più template), filtra le voci e restituisce l'output formattato.
| Parametro | Tipo | Default | Descrizione |
|---|---|---|---|
num |
numero | 10 | Quante voci mostrare |
OrCat |
stringa | — | Categorie in OR (virgola = OR tra gruppi) |
AndCat |
stringa | — | Categorie in AND (virgola = AND tra gruppi) |
NoCat |
stringa | — | Esclusione categorie; * = esclude voci con almeno una categoria. Applicato sempre in AND anche con And=off
|
Title |
stringa | — | Parola nel titolo; ; o | per OR, + per AND tra termini dentro un gruppo
|
Text |
stringa | — | Parola nella preview; ; o | per OR
|
TextRegExp |
stringa | — | Pattern regex (Lua, non PCRE) sulla preview e sulle categorie/template. Supporta espansione gruppi (a;b)
|
AndTemplate |
stringa | — | Tutti i template elencati devono essere presenti (virgola = AND tra gruppi) |
OrTemplate |
stringa | — | Almeno un template deve essere presente |
NoTemplate |
stringa | — | Esclusione template; * = esclude voci senza alcun template. Applicato sempre in AND anche con And=off
|
Portali |
stringa | — | AND sui portali (tutti devono essere presenti); virgola = AND tra portali |
OrPortali |
stringa | — | OR sui portali (basta almeno uno presente) |
ExclIfNotCat |
stringa | — | Veto finale: esclude la voce se ha la categoria X ma NON ha la categoria Y. Sintassi: X>Y; virgola = AND tra regole multiple. Applicato sempre indipendentemente da And=
|
CaseSensitive |
on/off | off | Rende i filtri Text e TextRegExp case-sensitive
|
DataFine |
gg/mm/aaaa | — | Solo voci create dopo questa data. Applicato sempre in AND anche con And=off
|
And |
on/off | off | Se on, tutti i filtri positivi devono essere soddisfatti simultaneamente (logica AND); se off (default) basta che almeno uno sia soddisfatto (logica OR). I filtri negativi (NoCat, NoTemplate, DataFine, ExclIfNotCat) sono sempre applicati in AND
|
Order |
stringa | data | Criterio di ordinamento (vedi sotto) |
Disp |
stringa | s | Formato output (vedi sotto) |
DispScroll |
stringa | — | Come Disp ma avvolge il risultato in uno scrollbox. Sintassi: v,300 (valore disp + altezza in px, default 200). Ha precedenza su Disp se valorizzato
|
Timestamp |
stringa | cachedays | Informazioni di aggiornamento mostrate sotto la lista (vedi sotto) |
I valori del parametro Disp (e DispScroll):
| Valore | Formato |
|---|---|
s |
Elenco numerato senza data (default) |
v |
Elenco numerato con data |
t |
Elenco puntato senza data |
o |
Elenco puntato con data |
h |
Elenco orizzontale, voci separate da · , senza data né numerazione
|
I valori del parametro Order:
| Valore | Ordinamento |
|---|---|
data |
Data decrescente: dalla voce più recente alla più vecchia (default) |
Dateold |
Data crescente: dalla voce più vecchia alla più recente |
Alpha |
Alfabetico crescente per titolo (dalla A alla Z, accenti e diacritici normalizzati) |
I valori del parametro Timestamp:
| Valore | Comportamento |
|---|---|
cachedays |
Mostra data aggiornamento + numero file cache + ampiezza temporale della cache (default) |
on |
Mostra data aggiornamento + numero file cache + ampiezza temporale delle voci filtrate |
days |
Mostra data aggiornamento + ampiezza temporale delle voci filtrate |
date |
Mostra solo la data di aggiornamento |
off |
Non mostra alcuna informazione di aggiornamento |
Tutti i parametri sono case-insensitive: |Disp=, |disp= e |DISP= sono equivalenti.
Funzione di debug: dato un titolo di voce, mostra le sue categorie, i suoi template (con parametri) e verifica se corrisponde a un filtro OrCat o Portali specificato. Esempio di utilizzo:
{{#invoke:VociRecenti|debugVoce|titolo=Nome voce|OrCat=aviatori}}
{{#invoke:VociRecenti|debugVoce|titolo=Nome voce|Portali=sport|NoTemplate=stub}}
La funzione mostra anche informazioni diagnostiche sul bug mw.ustring.find relativo ai template portale (vedi sezione "Problemi noti").
I filtri vengono applicati in sequenza su ogni voce della cache. La modalità di combinazione dipende dal parametro And:
And=off): basta che almeno uno dei filtri positivi sia soddisfatto. I filtri negativi (NoCat, NoTemplate, DataFine, ExclIfNotCat) sono sempre applicati come veto finale, indipendentemente da And=.And=on): tutti i filtri specificati devono essere soddisfatti simultaneamente.Se sono presenti solo filtri negativi (es. solo NoCat=), in modalità OR il modulo include tutte le voci che superano il veto, senza richiedere che soddisfino un filtro positivo.
Tutti i parametri filtro supportano i seguenti operatori:
| Operatore | Dove si usa | Significato |
|---|---|---|
, (virgola) |
OrCat, AndCat, NoCat, AndTemplate, OrTemplate, NoTemplate, Portali, OrPortali, ExclIfNotCat |
In OrCat/OrTemplate/OrPortali: OR tra gruppi. In AndCat/AndTemplate/Portali: AND tra gruppi. In NoCat/NoTemplate: AND tra gruppi di esclusione
|
; (punto e virgola) |
Tutti i parametri filtro | OR tra alternative dentro ogni gruppo. In Title e Text equivale a |
|
+ (più) |
Title |
AND tra termini dentro un gruppo OR. Es: riserva+darwin;oasi → (riserva AND darwin) OR oasi
|
"termine" (doppi apici) |
Tutti i parametri filtro | Match parola intera invece di sottostringa. Es: OrCat="nati" trova "Nati in Italia" ma non "Campionati"
|
not(termine) |
Tutti i parametri filtro | Negazione del termine nel contesto del parametro. Es: AndCat=not(Nati a Parigi),Morti a Parigi → non nati a Parigi E morti a Parigi. Supporta doppi apici: not("morti"). Supporta OR interno con ; o , in tutti i parametri: not(russa;russi) = né "russa" né "russi" (De Morgan)
|
OrCat include la voce se almeno una categoria contiene almeno uno dei termini; AndCat richiede che tutti i gruppi siano soddisfatti; NoCat esclude le voci che hanno almeno uno dei termini. La ricerca è per sottostringa, case-insensitive, salvo uso dei doppi apici per match parola intera.
Text cerca nella preview (primi 100 caratteri della voce); TextRegExp cerca nella preview e in categorie/template concatenati. I pattern per TextRegExp sono in formato Lua (non PCRE); il parametro CaseSensitive=on rende la ricerca sensibile alle maiuscole. I gruppi alternativi nella sintassi (a;b;c) vengono espansi in pattern multipli.
Il parametro ExclIfNotCat agisce sempre come veto finale, indipendentemente dalla modalità And=. Sintassi: X>Y dove > (Shift+.) separa la categoria trigger dalla categoria eccezione. Più regole separate da virgola vengono applicate in AND. Esempio:
ExclIfNotCat=Morti a Parigi>Nati a Parigi
Esclude le voci che hanno la categoria "Morti a Parigi" ma non hanno "Nati a Parigi". Risolve il caso di voci collegate a un argomento solo tramite una categoria "negativa" (es. luogo di morte) senza altri legami positivi.
L'ordinamento viene applicato dopo il filtraggio e prima del troncamento al numero di voci richiesto (num). Con Order=Alpha i caratteri accentati e diacritici vengono normalizzati alla lettera base prima del confronto (à=a, è=e, ecc.), in modo che "Élite" e "elite" siano ordinati come equivalenti.
Se nessuna voce corrisponde ai criteri di filtro, il modulo mostra un messaggio di avviso. Se Timestamp≠off, viene comunque visualizzata la riga di aggiornamento sotto il messaggio. Se la cache non è inizializzata (nessun file Dati presente), viene mostrato un avviso specifico che invita ad eseguire il bot.
Versione corrente: v8.33
| Versione | Modifica principale |
|---|---|
| v1–v5 | Sviluppo iniziale, singolo file cache, filtri base |
| v6.0 | Supporto multi-file cache (Dati1, Dati2, ...) |
| v7.0 | Caricamento automatico file multipli, parametro And per combinazione filtri OR/AND
|
| v8.0 | Parametro Order (data decrescente, crescente, alfabetico); parametro Timestamp per mostrare/nascondere informazioni di aggiornamento
|
| v8.7 | Aggiunto parametro OrPortali; Portali mantiene logica AND
|
| v8.10 | Aggiunto parametro DispScroll (scrollbox verticale/orizzontale)
|
| v8.13 | Supporto ; come separatore OR in tutti i parametri filtro
|
| v8.14 | Title: supporto + come AND tra termini dentro ogni gruppo OR
|
| v8.15 | Aggiunto parametro NoTemplate (esclusione template, con * per voci senza template)
|
| v8.16 | Default di And= cambiato da on a off
|
| v8.17 | Memoizzazione di loadAllData(): i file cache vengono caricati una sola volta per pagina (fix OOM con più template sulla stessa pagina)
|
| v8.18 | Aggiunto valore h per Disp e DispScroll (visualizzazione orizzontale)
|
| v8.19 | formatTimestamp: aggiunta sigla "UTC" accanto all'ora
|
| v8.20 | Fix logica filtri solo negativi in modalità And=off; aggiunto valore * per NoCat e NoTemplate
|
| v8.21 | Match parola intera con doppi apici ("termine") in tutti i parametri filtro
|
| v8.24–8.25 | Fix matchesPortali/matchesOrPortali: confronto esatto via isPortaleTemplate(), workaround bug mw.ustring.find, supporto doppi apici
|
| v8.26 | Supporto not(termine) in tutti i parametri filtro
|
| v8.27 | Aggiunto parametro ExclIfNotCat (veto finale: ha X ma non ha Y)
|
| v8.28–8.29 | Fix separatore ExclIfNotCat: cambiato da | a ~ a > per compatibilità con MediaWiki e tastiere italiane
|
| v8.30 | Fix not() in Portali e OrPortali: primo supporto OR interno con ; dentro not() (es. not(radio;cinema))
|
| v8.31 | (versione intermedia su Wikipedia, nessuna modifica documentata) |
| v8.32 | Fix not(X;Y) e not(X,Y) in tutti i parametri filtro: la funzione split() spezzava il token not(...) sui separatori interni. Nuova funzione splitParens() che ignora i separatori dentro parentesi tonde
|
| v8.33 | Fix not() con sotto-termini multipli in AndCat, OrCat, NoCat: l'inner estratto da parseNot veniva passato a contains() come stringa intera invece di essere espanso in sotto-termini. Nuova funzione expandNotInner() che espande l'inner su ; e , prima del match
|
Il modulo usa pcall per proteggere il require() di ogni file cache: se un file ha errori di sintassi Lua, viene saltato senza bloccare l'intera esecuzione. I long string Lua nei campi dati possono usare qualsiasi livello di escape — il modulo non deve gestirli esplicitamente perché Lua li interpreta nativamente.
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.