Con il termine memoRegex intendiamo, qui su it.wikisource, un sistema integrato per costruire interattivamente, memorizzare e ricaricare serie di regole di sostituzione automatica specifiche per un'opera o un gruppo di opere, completamente controllato dall'utente. Il codice è caricato attivando nelle tue preferenze il gadget memoRegex; devono essere attivati anche i due gadget Strumenti per la rilettura e "la bottoniera". Le sostituzioni vengono create attraverso il tool Trova e Sostituisci, con opzione Ricorda attivata; vengono lanciate in edit ad ogni chiamata del tool postOCR, dopodiché possono venire scaricate e memorizzate oppure ricaricate.

Operazioni di base

modifica

1. salvare le sostituzioni memorizzate:

da qualsiasi nsPagina premere il pulsante salva regex. Le regex memorizzate saranno scritte sulla pagina Discussioni indice correlata, sotto forma di apposito paragrafo dal titolo ==memoRegex==

2. lanciare tutte le regex memorizzate:

premere il pulsante esegui regex

Da giugno 2016 il caricamento delle regex specifiche per la pagina è automatico nel momento dell'edit di una pagina ("allineamento automatico"). Se nel corso dell'edit si memorizzano nuove regex, occorre salvarle con salva regex prima di editare pagine di un'altra opera.

È possibile caricare manualmente blocchi di regex da "pagine libreria" (qualsiasi pagina in pagine diverse da nsPagina) entrando in modifica nella pagina, selezionando l'intero blocco di regex da caricare (da {" a ]}) e premendo carica regex.

Organizzazione delle sostituzioni memorizzate

modifica

L'oggetto memoRegex è un dizionario, le cui chiavi sono costituite dalla regex di ricerca e i cui contenuti sono i codici necessari alla sostituzione regex.

Questo significa che ripetendo la memorizzazione di una stessa ricerca/sostituzione, l'input sovrascrive la sostituzione con la stessa chiave precedentemente memorizzata. Quindi, in caso di memorizzazione di una sostituzione errata, basta memorizzare la sostituzione giusta. Se invece l'errore sta nella chiave di ricerca, la cancellazione è più complessa (scaricamento della serie di sostituzioni memorizzate, eliminazione dell'intero blocco errato con paranoide attenzione a non togliere nemmeno un carattere in più o in meno, ricaricamento).

Possibili usi di Ricorda

modifica

Oltre a scannos, il meccanismo Ricorda può essere usato per memorizzare sostituzioni di abbreviazioni, cosa particolarmente utile se l'abbreviazione deve essere espansa in un testo wiki contenente codice standard.

Un esempio: in Discussioni indice:Deledda - Cenere, Milano, 1929.djvu è memorizzata la sostituzione di una x, preceduta e seguita da un acapo, con il seguente codice:

\n\n\n{{Centrato|{{xx-larger|•}}}}\n\n\n

che viene trasformato in




{{Centrato|{{xx-larger|•}}}}


ossia nel "segno di sottocapitolo" nel testo. Difficile ricordare esattamente il numero di acapo giusti, men che meno ricordarsi esattamente il codice {{Centrato|{{xx-larger|•}}}}, più facile ricordarsi l'abbreviazione "x". ;-)

Lo stesso si può fare per caratteri speciali, ad esempio si potrebbe memorizzare i q* e prevedere la loro sostituzione con q̃, o cose del genere, e per l'applicazione di template ricorrenti, associati a semplici parole-chiave.

Due memoRegex in Discussioni indice:Straparola - Le piacevoli notti II.djvu eseguono (vedi esempi del risultato qui):

  • nelle righe che iniziano con c+spazio: il testo della riga è inserito in un template Centrato
  • nelle righe che iniziano con ind+spazio: il testo della riga è inserito in un template Sc, a sua volta inserito come parametro testo= in un template Indentatura

Esempi e codice pronto da caricare

modifica

Nella pagina Aiuto:MemoRegex/Esempi trovate esempi tratti dai memoRegex di varie opere.

Modificare la sezione memoRegex di una pagina Discussioni indice

modifica

Aprendo una pagina Discussioni indice (ns. 111) che abbia una sezione memoRegex, e aprendo la sezione memoRegex in modifica, trovate un codice di questo tipo:

== memoRegex ==
<nowiki>{"\\n{{O\\|(.+)}}":["spostamento numero strofa(regex)","\n{{ct|f=100%|v=0|l=20em|$1.}}\n","gm"],
"^([^{].+)$":["indento(regex)","     $1","gm"],
"(}\\n)     ":["de-indento(regex)","$1","g"],
"^ +<poem":["(regex)","<poem","gm"],
"^ +<\\/poem":["(regex)","</poem","gm"],
"([aeiou]’)(\\w)":["(regex)","$1 $2","g"],
"^(\\d[13579]*)$":["^(\\d[13579]*)$","{{RigaIntestazione||{{type|f=90%|l=6px|PRIMO.}}|$1}}","gm"],
"^(\\d[02468]*)$":["^(\\d[02468]*)$","{{RigaIntestazione|$1|{{type|f=90%|l=6px|CANTO}}|}}","gm"],
"’ ([aeiouAEIOU])":["(regex)","’$1","g"],
"é":["","è","g"],
" +$":["eliminazione spazi a fine riga(regex)","","gm"],
"(\\w) e ":["virgola prima della e(regex)","$1, e ","g"],
"(\\w) o ":["virgola prima della o(regex)","$1, o ","g"]}</nowiki>

Notare che l'insieme delle regole è chiuso fra tag <nowiki></nowiki> e parentesi graffe. Ognuna delle righe termina con una virgola, ed ha questa struttura:

  • "espressione_regex":["commento","stringa sostituzione","modificatori regex"],

Facendo MOLTA attenzione a non commettere errori di copiaincolla, le righe possono essere riordinate, oppure se ne possono eliminare alcune e aggiungere altre.

Facendo MOLTISSIMA attenzione può essere modificato manualmente il codice di ciascun elemento.