Modulo:VociRecenti/man

Modulo:VociRecenti man


Modulo:VociRecenti — Documentazione

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.

Struttura della cache

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à.

Funzioni del modulo

p.main(frame)

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.

p.debugVoce(frame)

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").

Logica di filtraggio

I filtri vengono applicati in sequenza su ogni voce della cache. La modalità di combinazione dipende dal parametro And:

  • Modalità OR (default, 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=.
  • Modalità 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.

Separatori e operatori

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)

Ricerca nelle categorie

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.

Ricerca nel testo

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.

ExclIfNotCat

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.

Logica di ordinamento

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.

Comportamento con nessuna voce trovata

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.

Stato sviluppo

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.

Content Disclaimer

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.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.