# -*- coding: utf-8 -*-
#
# Il codice può essere inserito in user-fixes.py (createlo se non esiste).
# Versione 2020-02-27 11:15
#
# Comando di esempio:
#
# python transfer/wikipedia/pywikipedia/replace.py -namespace:0 -xml:transfer/wikipedia/itwiki-latest-pages-articles.xml -fix:tutti -xmlstart:''
fixes['tutti'] = {
'regex': True,
'recursive': True,
'msg': {
'it':u'Bot: Correzione di uno o più [[Utente:RolloBot/user-fixes.py|errori comuni]]'
},
'replacements': [
# Mobygames
(u'([a-zA-Z1-9{} ]+) \[http://www.mobygames.com/game/(\w+) \'\'(\w+)\'\'(.*)', r'{{MobyGames|id=\2|titolo=\3}}'),
# Galleria fotografica
(u'==(=| )*(Galleria fotografica|Galleria immagini|Galleria di immagini|Galleria di foto|Fotogalleria|Fotografie|Immagini)(=| )*==', r"== Galleria d'immagini =="),
# Trasformo le triple/quadruple/ecc... in doppie (escludo punteggiatura, www, xxx, iii e numeri)
#(r'([abcdefghjklmnopqrstuvyz])\1{2,}', r'\1\1'),
#(r'([^#])([abcdefghjklmnopqrstuvyz])\2{1,5}', r'\1\2\2'), #Test per escludere i colori
######
# VARIE
#(u"\\b(\w+)i(e?)t(a'|a’|a`|à|á)(\W)", r'\1i\2tà\4'), # *ita' --> ità, ieta' --> ietà # TROPPE ECCEZIONI
# Errori di apertura/chiusura wlink
(u'\[è', r'[['),
(u'è\[', r'[['),
(u'(!\[)\[{', r'[['),
# A capo di troppo
(u'(\r?\n){3,}', r'\n\n'),
# Apostrofo con spazio
(u"(l)(l)?('|’ )( ){1,}(')", r"\1\2<nowiki>'</nowiki>'"), # Per evitare di inserire doppi/tripli apostrofi di wikicode
(u"(l|L)(l)?('|’ )( ){1,}([a-z])", r"\1\2'\5"),
(u"(un)('|’ )( ){1,}(')", r"un<nowiki>'</nowiki>'"), # Per evitare di inserire doppi/tripli apostrofi di wikicode
(u"(un)('|’ )( ){1,}", r"un'"),
######
(u'\\b([a]) (partecipato|giocato|tentato)\\b', r'ha \2'), # a --> ha
(u'\\b([A]) (partecipato|giocato|tentato)\\b', r'Ha \2'), # A --> Ha
(u'\\b([aA])b(b?)at(t?)ut(t?)(\w+)\\b', r'\1bbattut\5'), # abbattutt* --> abbattut+
(u'\\b([aA])ccellera(re|zione|to|tore)\\b', r'\1ccelera\2'), # Accelerare
(u'\\b([aA])cchitto\\b', r'\1cchito'), #acchitto --> acchito # RARO
(u'\\b([aA])reazione', r'\1erazione'), # areazione -> aerazione
(u'\\b([aA])quis(i|t)(\w+)\\b', r'\1cquis\2\3'), # aCquisire - aCquistare
(u'\\b([aA])diacient(e|i)\\b', r'\1diacent\2'), # Adiacenti
(u'\\b([aA])ffezzion(\w+)\\b', r'\1ffezion\2'),
(u"\\b([aA])(bben|ccioc|ffin|ncor|nzi|tteso|llor|nzi)ch(è|e'|e’|e`|e)([\W])", r'\1\2ché\4'),
(u'\\b([aA])e?reoport(o|i)\\b', r'\1eroport\2'), # Aeroporto
(u'\\b([aA])e?reo(plan|trasport|mobil|din)(\w+)\\b', r'\1ero\2\3'), # Aeroplano - Aerotrasporto - Aeromobile - Aerodinamico
(u'\\b([aA])ggiottaggio\\b', r'\1ggiotaggio'), # RARO ?
(u'\\b([aA])g(g?)res(s?)iv(\w+)\\b', r'\1ggressiv\4'), # RARO ?
(u'\\b([aA])l(cun|lor|tro)chè\\b', r'\1l\2ché'), # Alcunché
(u'\\b([aA])ltres(i\'|i’|i`|í|i)', r'\1ltresì'), # Altresì
(u'\\b([aA])ll\'([^aàαaeéèiyjlmnouhAÁÀÅEÈÉFIÎÍYJJLMNOÖÓÒŌØRSUÚHXV0-9{}()\'"“”«<[\]] )', r'\1l \2'), # Test All' seguito da consonanti (DA TESTARE PER ECCEZIONI)
(u'\\b([aA])ltretant(e|i|o)\\b', r'\1ltrettant\2'), # Altrettanto # RARO ?
(u'\\b([aA])mpiament(o|i)', r'\1mpliament\2'), # ampiamento -> ampliamento # RARO?
(u'\\b([aA])mpliamente', r'\1mpiamente'), # ampliamente -> ampiamente
#RARO (u'\\b([aA])p(p?)ariz(z?)ion(e|i)\\b', r'\1pparizion\4'),
(u'\\b([aA])p(p?)rof(f?)itt(a|i|o|ò|are|ata|ato|ati|ate|ando|erà|eranno)\\b', r'\1pprofitt\4'), # Approfittare
(u'\\b([aA])ppropiat(a|e|i|o)\\b', r'\1ppropriat\2'), # appropriato
(u'\\b([aA])pprovigiona(.*?)\\b', r'\1pprovvigiona\2'), # approvvigiona
(u'\\b([aA])quist(a|i|o|ò|are|ata|ato|ati|ate|ando|erà|eranno)\\b', r'\1cquist\2'), # acquistare
(u'\\b([aA])rrabi(o|ò|are|are|ata|ato|ati|ate|ando|erà|eranno)\\b', r'\1rrabbi\2'), # arrabbiare
(u'\\b([aA])scie\\b', r'\1sce'), # asce
(u'\\b([aA])ssasin(\w+)\\b', r'\1ssassin\2'), # assassino
(u'\\b([aA])sseragli(\w+)\\b', r'\1sserragli\2'), # RARO? # asseragliare
(u'\\b([aA])ssistir(\w+)\\b', r'\1ssister\2'), # assistire --> assistere
(u'\\b([aA])segnat(o|i|e|a)\\b', r'\1ssegnat\2'), # RARO? # assegnare
#RARO (u'\\b([aA])suefa(\w+)\\b', r'\1ssuefa\2'),
(u'\\b([aA])ssulut(\w+)\\b', r'\1ssolut\2'), # assulut* -> assolut*
(u'\\b([aA])travers(\w+)\\b', r'\1ttravers\2'), # RARO? # attraversare
(u'\\b([aA])trezz(\w+)\\b', r'\1ttrezz\2'), # RARO? # attrezzare
(u"\\b([aA])ttivit(a\'|a’|a`|á|a)", r'\1ttività'), # attivita --> attività
(u"\\b([aA])utorit(a\'|a’|a`|á)", r'\1utorità'), # autorita --> autorità
(u'\\b([aA])venne\\b', r'\1vvenne'), # avenne --> avvenne
(u"\\b([aA])vr(a\'|a’|a`|á)(?!')(?!s)", r'\1vrà'), # avra --> avrà
(u'\\b([aA])vver(a\'|a’|a`|à|á)\\b', r'\1vverrà'),
(u'\\b([bB])ancherell(a|e)\\b', r'\1ancarell\2'),
(u'\\b([rR]i)?([bB])at(t?)ez(z?)(a|o|ò|i|ata|ato|ati|ate|ando|erà|eranno)\\b', r'\1\2attezz\5'), # battezzare
# Troppe eccezioni (u'\\b([bB])ellisim(a|i|e|o)\\b', r'\1ellissim\2'),
(u'\\b([bB])eneficienz(a|e)\\b', r'\1eneficenz\2'),
(u'\\b([bB])enchè\\b', r'\1enché'),
(u'\\b([bB])olscevici\\b', r'\1olscevichi'),
(u'\\b([bB])reccie\\b', r'\1recce'),
(u'\\b([bB])rucier(\w+)\\b', r'\1rucer\2'),
(u'\\b([cC])(hec|ioc|omec|onciofosse|ontutto|osic|otal)chè\\b', r'\1\2ché'),
(u'\\b([cC])ammuffa(\w+)\\b', r'\1amuffa\2'),
#(u'\\b([cC])apocannonieri\\b', r'\1apicannonieri'), # capocannonieri -> capicannonieri
(u'\\b([cC])apuologo\\b', r'\1apoluogo'), # capuologo -> capoluogo
(u'\\b([cC])ar(r?)eg(g?)iat(a|e)\\b', r'\1arreggiat\4'), # Careggiata | Carregiata -> Carreggiata
(u'\\b([cC])asamatte', r'\1asematte'), # casamatte -> casematte
(u'\\b\[\[([cC])ategory:\\b', r'\[\Categoria:'),
(u"\\bci(o'|o'|o’|o´|o`|o)([\W])", r'ciò\2'), # cio --> ciò
(u'\\b([cC])ioé\\b', r'\1ioè'),
(u'\\b([cC])haffeur\\b', r'\1hauffer'), # chaffeur --> chauffeur
(u'\\b([cC])iotol(i|o)\\b', r'\1iottol\2'), # ciotoli -> ciottoli
(u"\\b([cC])itt(a\'|a’|a‘|a`|á|a) ", r'\1ittà '), # citta' --> città
(u'\\b([cC])lichè\\b', r'\1liché'), # clichè --> cliché
(u'coaugul(.*)\\b', r'coagul\1'), # coaugulo --> coagulo
(u'\\b([cC])oefficen(\w+)\\b', r'\1oefficien\2'), # coefficiente
(u'\\b([cC])o(l?)lezzion(\w+)\\b', r'\1ollezion\3'), # collezione
(u'\\b([cC])olluttor(i|io)\\b', r'\1ollutor\2'), # collutorio
(u'\\b([cC])ollutazion(e|i)\\b', r'\1olluttazion\2'), # collutazione -> colluttazione
(u'\\b([cC])olonell(i|o)\\b', r'\1olonnell\2'), # colonnello
(u'\\b([cC])omincier(a\'|a’|a‘|a`|á|à|a)\\b', r'\1omincer\2'), # Comincerà
(u'\\b([cC]om|)([pP])ropi(o|età|etari|etari[aeo])\\b', r'\1\2ropri\3'), # Proprietà, comproprietà
(u'\\b([iI]n|)([cC])ompresion(e|i)\\b', r'\1\2omprension\3'), # Compresione --> Comprensione # RARO?
(u'\\b([cC])ommisar(i|io|ia|iato)\\b', r'\1ommissar\2'), # commisario --> commissario
(u'\\b([cC])om(m?)unit(a\'|a’|a‘|a`|á|a)([\W])', r'\1omunità\4'), # communità --> comunità
(u'\\b([cC])onoscienz(\w+)\\b', r'\1onoscenz\2'),
(u'\\b([cC])onp(\w+)\\b', r'\1omp\2'), # DA TESTARE
(u'\\b([cC])onnubb(io|i)\\b', r'\1onnub\2'),
(u'\\b([cC])onsequenz(a|e)\\b', r'\1onseguenz\2'), # consequenz* --> conseguenz*
(u'\\b([cC])ontentent(e|i)\\b', r'\1ontenent\2'), # contentente ---> contenente
(u'\\b([cC])ontradistin(\w+)\\b', r'\1ontraddistin\2'), # contradistinguere ---> contraddistinguere
(u'\\b([cC])ontrol(a|i|o)\\b', r'\1ontroll\2'),
(u'\\b([cC])onvizion(\w+)\\b', r'\1onvinzion\2'),
(u'\\b([cC])onclu(\w+) infine\\b', r'\1onclu\2'), # conclu* infine -> conclu*
(u'\\b([cC])orrezzion(\w+)\\b', r'\1orrezion\2'),
(u'\\b([cC])ronostori(\w+)\\b', r'\1ronistori\2'),
(u'\\b(cC)oscenz(\w+)\\b', r'\1oscienz\2'),
(u"\\b([cC])os(i'|i’|i`|í|i)([\W])", r'\1osì\3'), # cosi -> così
(u'\\b([cC])os(i|ì)ch(è|é|e|)\\b', r'\1osicché'),
(u'\\b([cC])os(i|ì)dett(o|i|e|a)\\b', r'\1osiddett\3'),
(u'\\b([cC])ospiqu(o|i|e|a)\\b', r'\1ospicu\2'),
# coverizzare -> reinterpretare
(u'\\bcoverizzare\\b', r'reinterpretare'),
(u'\\bcoverizza(.*?)\\b', r'reinterpreta\1'),
(u'\\b([dD])al (agosto|aprile|inizio|interno|ottobre)\\b', r"\1all'\2"), # Dall'
(u'\\b([dD])a(n?)neg(g)?ia(.*?)\\b', r'\1anneggia\4'),
(u'\\b([dD])(ac|appoi|imodo|opo|opodi)chè\\b', r'\1\2ché'),
(u'\\b([dD])(accordo|altronde)\\b', r"\1'\2"), # d'accordo e d'altronde
(u'\\b([dD]e|[cC]oef)ficen(za|te|ti)\\b', r'\1ficien\2'), # Deficienza - Coefficienza
(u'\\b([dD])eceller(\w+)\\b', r'\1eceler\2'),
(u'\\b([dD])efinitv(\w+)\\b', r'\1efinitiv\2'), # definitvo --> definitivo
#RARO (u'\\b([dD])elgli\\b', r'\1egli'), #delgli -> degli
(u'\\b([dD])eliquen(\w+)\\b', r'\1elinquen\2'), # deliquente --> delinquente
(u'\\b([dD])[è|e]pliant\\b', r'\1épliant'), # dépliant
(u'\\b([dD])icianov(\w+)\\b', r'\1iciannov\2'),
(u'\\b([dD])iciasett(\w+)\\b', r'\1iciassett\2'),
(u"\\b([dD])ifficolt(a'|a’|a‘|a`|a´|á|a)", r'\1ifficoltà'), # difficolta' --> difficoltà
(u'\\b([dD])imenzion(\w+)\\b', r'\1imension\2'),
(u'\\b([dD])iminuizion(e|i)\\b', r'\1iminuzion\2'), # diminuizione --> diminuzione
(u'\\b([dD])iretric(\w+)\\b', r'\1irettric\2'),
(u'\\b([dD])opodichè\\b', r'\1opodiché'),
(u"\\b([dD])ovr(a\'|a’|a`|á)", r'\1ovrà'), # dovra --> dovrà
(u'(\\b|\\.)e(\'|’|`|\') ', r'\1è '),
(u'(\\b|\\.)E(\'|’|`) ', r'\1È '),
(u'\\b([eE])c(c?)es(s?)iv(\w+)\\b', r'\1ccessiv\4'),
(u'\\b([eE])ccelenz(a|e)\\b', r'\1ccellenz\2'), # eccelenza --> eccellenza
(u'\\b([eE])ccezzion(\w+)\\b', r'\1ccezion\2'),
(u'\\b([eE])dinburgo\\b', r'\1dimburgo'),
(u'\\b([eE])f(f?)et(t?)ua(.*?)\\b', r'\1ffettua\4'),
(u'\\b([eE])fficacie\\b', r'\1fficace'), # efficace
(u'\\belit[è|é]\\b', r'élite'), # élite
(u'\\be[m|n]passe\\b', r'impasse'),
(u'\\b([eE])ntro e non oltre\\b', r'\1ntro'), # entro e non oltre -> entro
(u'\\b([eE])ntrambe i (brani)\\b', r'\1ntrambi i \2'), # Entrambe i -> Entrambi i
(u'\\b([eE])spozion(e|i)\\b', r'\1sposizion\2'), # espozione --> esposizione
#RARO (u'\\b([eE])ssendochè\\b', r'\1ssendoché'),
#RARO (u'\\b([eE])ssenzialemente\\b', r'\1ssenzialmente'), # essenzialemente -> essenzialmente
(u'\\b([eE])s(s?)(i|e)c(c?)at(.*?)\\b', r'\1ssiccat\5'),
(u'\\b([eE])sterefa(\w+)\\b', r'\1sterrefa\2'),
(u'\\b([eE])vaqua(re|[t][oiae]|zione)\\b', r'\1vacua\2'),
(u'\\b([eE])xtraterrest(e|i)\\b', r'\1xtraterrestr\2'), # extraterreste --> extraterrestre
(u'\\b([fF])accie\\b', r'\1acce'),
(u'\\bfar(a\'|a’|a‘|a`|á)([\W][^\]])', r'farà\2'), # fara -> farà
(u'\\b([fF])ar si che\\b', r'\1ar sì che'),
(u'\\b([fF])inalemente\\b', r'\1inalmente'), # finalemente -> finalmente
(u'\\b([fF])ittizzi(.*?)\\b', r'\1ittizi\2'),
(u'\\b([fF])iun(e|i)\\b', r'\1ium\2'), # fiune -> fiume
(u'\\b([fF])(inattanto|intanto|inac|inattanto|in|uor)chè\\b', r'\1\2ché'),
(u"\\b([fF])ond(o'|o’|o`|o′|ó)([\W])", r'\1ondò\3'), # fondo' --> fondò
(u'\\b([fF])ratempo\\b', r'\1rattempo'),
(u'\\b([fF])uoriscit(\w+)\\b', r'\1uoriuscit\2'), # fuoriscito -> fuoriuscito
(u'\\bfurno\\b', r'furono'), # furno -> furono
(u"\\b([gG])es(u'|u’|u`|u´|ú|u`|u)([\W])", r'Gesù\3'), # Gesu -> Gesù
(u'\\b([gG])(iac|ran|iafosse|iafossecosa)chè\\b', r'\1\2ché'),
(u"\\b([gG])i(a'|a’|a‘|a`|á)([\W])", r'\1ià\3'), # gia -> già
(u'\\b([gG])ioell(o|i|iere|ieri)\\b', r'\1ioiell\2'), # gioello -> gioiello
(u'\\b([gG])iubott(\w+)\\b', r'\1iubbott\2'), # giubotto -> giubbotto
#RARO (u'\\b([gG])ravamente\\b', r'\1ravemente'), # gravamente -> gravemente
(u'\\b([gG])uardiaboschi\\b', r'\1uardaboschi'), # guardiaboschi -> guardaboschi
# hostare -> ospitare
(u'\\bhostare\\b', r'ospitare'),
(u'\\bhostat(.*?)\\b', r'ospitat\1'),
(u'\\b([iI])mpiccaggion(i|e)\\b', r'\1mpiccagion\2'), # impiccaggione --> impiccaggione
(u'\\b([iI])ncoscen(\w+)\\b', r'\1ncoscien\2'),
(u'\\b([iI])ndizzi(.*?)\\b', r'\1ndizi\2'),
(u'\\b([iI])(nfinattanto|nquanto)chè\\b', r'\1\2ché'),
(u'\\b([iI])nbra(\w+)\\b', r'\1mbra\2'),
(u'\\b([iI])ndiped(\w+)\\b', r'\1ndipend\2'), # indipedente --> indipendente
(u'\\b([iI])nfermieri(a|e)\\b', r'\1nfermeri\2'), # infermieria --> infermeria
(u'\\b([iI])gen(e|ic[oai]|iche)\\b', r'\1gien\2'),
(u'\\b([iI])nefficen(\w+)\\b', r'\1nefficien\2'),
(u'\\b([iI])ngenier(e|i)\\b', r'\1ngegner\2'),
(u'\\b([iI])nnaugu(\w+)\\b', r'\1naugu\2'), # innaugu* --> inaugu*
(u'\\b([iI])nnoqu(i|o|a|e)\\b', r'\1nnocu\2'),
(u'\\b([iI])nped(\w+)\\b', r'\1mped\2'),
(u'\\b([iI])npugn(\w+)\\b', r'\1mpugn\2'),
(u'\\b([iI])nsuc(c?)es(s?)(\w+)\\b', r'\1nsuccess\4'), # insucess* --> insuccess*
(u'\\b([iI])nsuffice(\w+)\\b', r'\1nsufficie\2'),
(u'\\b([iI])nte(l?)li(g?)g(i?)en(te|ti|za)\\b', r'\1ntelligen\5'), #RARO?
(u'\\b([iI])nteraz(z?)ial(e|i)\\b', r'\1nterrazzial\3'), # Interazziale --> Interrazziale
(u'\\b([iI])nter(r?)ut(t?)or(e|i)\\b', r'\1nterruttor\4'), # Interuttore --> Interruttore
#RARO (u'\\b([iI])nterruzzion(\w+)\\b', r'\1nterruzion\2'),
(u'\\b([iI])nzio\\b', r'\1nizio'), # inzio -> inizio
#TROPPE ECCEZIONI (u'\\b([iI]l|)leg(g?)it(t?)im(o|i|e|a)\\b', r'\1legittim\4'), # legitimo, leggittimo --> legittimo
(u'\\b([iI]n|)([cC])oscen(za|te|ti)\\b', r'\1\2oscien\3'), # (in)coscienza
(u'\\b([iI]n|)([sS])ufficen(za|te|ti)\\b', r'\1\2ufficien\3'), # (in)sufficienza
(u'\\b([iI])ntervendo\\b', r'\1ntervenendo'), # intervendo -> intervenendo
#RARO (u'\\b([iI])rridentis(\w+)\\b', r'\1rredentis\2'), # irridentis* -> irredentis*
(r'italia\\b', r'Italia'), # italia* -> Italia
(r'ISNB', r'ISBN'), # ISNB -> ISBN
(u'([jJ])ava([sS])cript', r'JavaScript'), #javascript --> JavaScript
(u'\\b([lL])ascier(\w+)\\b', r'\1ascer\2'),
#(u'\\b([lL])eg(g?)it(t?)im(\w+)\\b', r'\1egittim\4'),
(u'\\b([lL])ibreria del [Cc]ongresso\\b', r'Biblioteca del Congresso'),
(u'\\b([lL])ibricin(\w+)\\b', r'\1ibriccin\2'),
(u'\\b([lL])ontant(o|i|e|a)\\b', r'\1ontan\2'), # lontanto --> lontano
(u'\\b([mM])acchè\\b', r'\1acché'),
(u'\\b([mM])agazin(i|o|iere|ieri|iera|iere)\\b', r'\1agazzin\2'),
(u'([mM])aggiorparte', r'\1aggior parte'), # Maggiorparte --> Maggior parte
(u'\\b([mM])alvage\\b', r'\1alvagie'),
(u'\\b([mM])arciaped(i|e)\\b', r'\1arciapied\2'), # marciapede --> marciapiede
(u'\\b([mM])enager\\b', r'\1anager'), # Manager
(u'\\b([mM])aneggievol(\w+)\\b', r'\1aneggevol\2'),
(u'\\b([mM])enbr(o|i|e|a)\\b', r'\1embr\2'),
#RARO (u'\\b([mM])enscevici\\b', r'\1enscevichi'),
(u'\\b([mM])eridonal(\w+)\\b', r'\1eridional\2'), # meridonale -> meridionale
#RARO (u'\\b([mM])antendend(\w+)\\b', r'\1antenend\2'), # mantendendo -> mantenendo
(u"\\b([mM]?)et(a\'|a’|a‘|a`|á)([\W])", r'\1età\3'), # meta' --> metà - età
(u'\\b([mM])etereolog(\w+)\\b', r'\1eteorolog\2'), # meteoreologia
(u'\\b([mM])illionar(\w+)\\b', r'\1ilionar\2'),
(u'\\b([mM])inaccie\\b', r'\1inacce'),
#RARO (u'\\b([mM])uscial(i|e)\\b', r'\1usical\2'), # muscial* -> musical*
(u'\\bil moniker\\b', r'il soprannome'), # moniker -> soprannome
(u'\\bi moniker\\b', r'i soprannomi'),
#RARO (u'\\b([nN])enache\\b', r'\1eanche'), # nenache -> neanche
(u'\\b([nN])eccess(\w+)([\W])', r'\1ecess\2\3'),
(u'\\b([nN])el ([pP])aesi\\b', r'\1ei \2aesi'),
(u'\\b([nN])ei ([pP])aese\\b', r'\1ei \2aesi'),
(u'\\b([nN])essun(\'|’|`)altr(o|i)\\b', r'\1essun altr\3'), # nessun'altro --> nessun altro
(u"\\b([nN])on(so|)ch(è|e'|e’|e`|e)([\W])", r'\1on\2ché\4'),
(u'\\b([nN])on(on|)stante\\b', r'\1onostante'),
(u'\\b([nN])orvegies(\w+)\\b', r'\1orveges\2'),
(u'\\b([oO])(ltre|nde)chè\\b', r'\1\2ché'),
(u'\\b([oO])norefic(i?)enz(e|a)\\b', r'\1norificenz\3'),
(u'\\b([oO])rganizazion(e|i)\\b', r'\1rganizzazion\2'), # organizazione --> organizzazione
(u'\\b([oO])rificeri(a|e)\\b', r'\1reficeri\2'), # orificeria --> oreficeria
(u'\\b([oO])rsono\\b', r'\1r sono'), # orsono --> or sono
(u'\\b([oO])ttenero\\b', r'\1ttennero'), # ottenero --> ottennero
(u'\\b([oO])(sè|sée)\\b', r'\1sé'), # osé
(u'\\b([oO])vverossia\\b', r'\1vverosia'),
(u"\\b([pP])(oi|resso|ur)ch(è|e'|e’|e`|e)([\W])", r'\1\2ché\4'), # Poiché, Pressoché, Purché
(u'\\b([pP])alazetto\\b', r'\1alazzetto'), # palazetto --> palazzetto
(u'\\b([pP])almarés\\b', r'\1almarès'), # Palmarés --> Palmarès
(u'\\b([pP])annel(o|i)\\b', r'\1annell\2'),
(u'\\b([pP])aralell(a|e|i|o)\\b', r'\1arallel\2'), # parallelo
(u'\\b([pP])ar(r?)oc(c?)hi(a|e)\\b', r'\1arrocchi\4'), # parocchia
(u'\\b([pP])ar(r?)uc(c?)hier(a|e|a|i)\\b', r'\1arrucchier\4'), # paruchiere --> parrucchiere
#RARO (u'\\b([pP])articolarmodo\\b', r'\1articolar modo'), # particolarmodo -> particolar modo
(u'\\b([pP])articoalr(\w+)\\b', r'\1articolar\2'), # particoalr -> particolar
(u'\\b([pP])erloppiù\\b', r'\1erlopiù'),
(u"\\bper(cioc|lo|oc|)ch(è|e'|e’|e`|e)([\W])", r'per\1ché\3'), # perché, percioché, perloché, peroché
(u"\\b([pP])erci(o'|o’|o`|o′|ó|o)([\W])", r'\1erciò\3'), # percio' -> perciò
(u'\\b([pP])ercui\\b', r'\1er cui'), # percui -> per cui
#RARO (u'\\b([pP])erfavore\\b', r'\1er favore'), # perfavore -> per favore
(u"\\b([pP])er(o'|o’|o`|o′|ó)([\W])", r'\1erò\3'), # pero' -> però
(u'\\b([pP])ertando\\b', r'\1ertanto'), # pertando -> pertanto
(u'\\b([pP])erosna(\w+)\\b', r'\1ersona\2'), # perosna* -> persona*
(u'\\bpicozz(a|e)', r'piccozz\1'), # picozza -> piccozza (solo minuscola per evitare i nomi propri)
(u'\\b([pP])ioggie\\b', r'\1iogge'),
(u"\\b([pP])i(u'|u’|u`|u´|ú|u`|u)([\W])", r'\1iù\3'), # piu -> più
(u'\\b([pP])oliomelit(e|i)\\b', r'\1oliomielit\2'),
# troppe eccezioni dovute a Ligabue (u'\\b([pP])lexiglass\\b', r'\1lexiglas'), # plexiglass -> plexiglas
(u'\\b([pP])oli(zo|zzio)tt(\w+)\\b', r'\1oliziott\3'), # Poliziotto
(u'\\b([pP])orgett(\w+)\\b', r'\1rogett\2'), # porgetto --> progetto
(u'\\bporter(a\'|a’|a`|a‘|á|a)([\W])', r'porterà\2'), # portera' --> porterà
(u'\\b([pP])ossibil(i?)t(a\'|a’|a‘|a`|a`|á|a)([\W])', r'\1ossibilità\4'), # possibilià -> possibilità
(u'\\b([Èè]) possibili ', r'\1 possibile '), # possibilià -> possibilità
(u'\\b([pP])redirre\\b', r'\1redire'), # Predirre --> Predire
(u'\\b([pP])regievol(\w+)\\b', r'\1regevol\2'),
#RARO (u'\\b([pP])recendet(\w+)\\b', r'\1recedent\2'), # precendete -> precedente, precendetemente -> precedentemente
(u'\\b([pP])resn(e?)t(\w+)\\b', r'\1resent\3'), # presnti* -> presenti*
(u'\\b([pP])ressapoc(\w+)\\b', r'\1ressappoc\2'),
(u'\\b([pP])ressocch(è|e)\\b', r'\1ressoché'),
#RARO (u'\\b([pP])revalentamente\\b', r'\1revalentemente'), # prevalentamente -> prevalentemente
#RARO (u'\\b([pP])revaletemente\\b', r'\1revalentemente'), # prevaletemente -> prevalentemente
#RARO (u'\\b([pP])revileg(\w+)\\b', r'\1rivileg\2'), # previleg* -> privileg*
(r'primo debutto', r'debutto'), # primo debutto -> debutto
(u'\\b([pP])(rincipale protagonista|rotagonista principale)\\b', r'\1rotagonista'), # principale protagonista -> protagonista
(u'\\b([pP])(rincipa|v)lemente\\b', r'\1\2lmente'), # principalemente -> principalmente probabilemente --> probabilmente
(u'\\b([pP])robizion(\w+)\\b', r'\1roibizion\2'), # probizion* --> proibizion*
(u'\\b([pP])ronuciat(a|e|i|o)\\b', r'\1ronunciat\2'), # Pronunciato
(u'\\b([cC]om|)([pP])(rop|rorp)i(o|a|e|età|etari|etari[aeo])\\b', r'\1\2ropri\4'), # Proprietà
(u'\\b([pP])rospicent(e|i)\\b', r'\1rospicient\2'),
#RARO (u'\\b([pP])(rofi|romis)qu(o|a|e|i)', r'\1\2\cu\3'), # proficuo - promiscuo
(u'\\b([pP])roseguio\\b', r'\1rosieguo'), # prosieguo
(u'\\b([pP])roveniendo\\b', r'\1rovenendo'), # provenendo
#RARO (u'\\bpseudonom(\w+)\\b', r'pseudonim\1'), # pseudonomi -> pseudonimi
#TROPPE ECCEZIONI #(u"\\b([pP])ublic(\w+)", r'\1ubblic\2'), # publico -> pubbiclo, publicare -> pubblicare
(u"\\b([pP])ublicat(i|e|o|a)\\b", r'\1ubblicat\2'), # publicato -> pubbiclato
(u"\\b([pP])ubblicit(a\'|a’|a‘|a`|à|á|a)([\W])", r'\1ubblicità\3'), # Pubblicità
(u"\\b([pP])ublicizz(\w+)\\b", r'\1ubblicizz\2'), # publicizza -> pubblicizza
(u"\\b([pP])u(o'|o’|o`|o′|ó|o)([\W])", r'\1uò\3'), # puo -> può
#RARO (u'\\b([qQ])ua(nto|si)chè\\b', r'\1ua\2ché'),
(u'\\b([qQ])ualcun\'altro\\b', r'\1ualcun altro'), # qualcun'altro -> qualcun altro
(u'\\b([qQ])ual\'(ora|era|è)\\b', r'\1ual \2'), # qual'è -> qual è, qual'era -> qual era, qual'ora -> qualora
(u"\\b([qQ])ualit(a\'|a’|a‘|a`|à|á|a)([\W])", r'\1ualità\3'), # qualità
(u"\\b([qQ])uantit(a\'|a’|a‘|a`|à|á|a)([\W])", r'\1uantità\3'), # quantità
(u'\\b([qQ])uattrodic(\w+)\\b', r'\1uattordic\2'), # quattrodic* -> quattordic*
(u'\\b([qQ])eust(\w+)\\b', r'\1uest\2'), # qeust* -> quest*
(u'\\b([rR])ad(d?)op(p?)i(\w+)\\b', r'\1addoppi\4'),
(u'\\b([rR])agiun(\w+)\\b', r'\1aggiun\2'), # ragiungere -> raggiungere
(u'\\b([rR])aggin(\w+)\\b', r'\1aggiun\2'), # raggingere -> raggiungere
(u'\\braport(o|i)\\b', r'rapport\1'), # raporto --> rapporto
(u'\\b([rR])ealiza(re|te|ti|to|ta)\\b', r'\1ealizza\2'), # realizare --> realizzare
(u"\\b([rR])e(al|la)t(a\'|a’|a‘|a`|à|á|à)", r'\1ealtà'), # relatà -> realtà
(u"\\b([rR])elativemente\\b", r'\1elativamente'), # relativemente --> relativamente
(u'\\b([rR])ecenzion(e|i)\\b', r'\1ecension\2'),
(u'\\b([rR])eminescenz(a|e)\\b', r'\1eminiscenz\2'),# reminescenz* --> reminiscenz*
(u'\\b([rR]i|)([cC])onoscien(za|te|ti)\\b', r'\1\2onoscen\3'), # (ri)conoscienza -> conoscenza
(u'\\b([rR])icorpert(a|e|i|o)\\b', r'\1icopert\2'),# ricorperto --> ricoperto
(u'\\b([rR])ilascier(\w+)\\b', r'\1ilascer\2'), # rilascier* -> rilascer*
(u'\\b([rR])igurd(\w+)\\b', r'\1iguard\2'), # rigurd* -> riguard*
(u'\\b([rR])iuscer(\w+)\\b', r'\1iuscir\2'), # riuscer* -> riuscir*
(u'\\b([rR])iusce\\b', r'\1iesce'), # riusce* -> riesce*
#RARO (u'\\b([rR])ingrazzi(.*?)\\b', r'\1ingrazi\2'),
#RARO #(u'\\b([rR])innomat(\w+)\\b', r'\1inomat\2'), # rinnomato --> rinomato
#RARO #(u'\\b([rR])innomin(\w+)\\b', r'\1inomin\2'), # rinnominare --> rinominare
#RARO #(u'\\b([rR])iperquot(\w+)\\b', r'\1ipercuot\2'),
#RARO #(u'\\b([rR])ivista(t|zion)(a|i|o|e)([\W])', r'\1ivisita\2\3'), # rivistata --> rivisitata, rivistazione --> rivisitazione
(u"\\bsar(a\'|a’|a‘|a`|à|á)([\W])", r'sarà\2'), # sara' --> sarà
(u'\\b([sS])chizzofreni(\w+)\\b', r'\1chizofreni\2'),
(u'\\b([sS])ep(p?)el(l?)i(.*?)\\b', r'\1eppelli\4'),
(u'\\b([sS])centific(\w+)\\b', r'\1cientific\2'), # scientifico
(u'\\b([sS])cenz([a|e|ia|ie|iato|iati|iata|iate])', r'\1cienz\2'), # scenzia --> scienzia
(u'\\b([sS])enonch[è|é]([\W])', r'\1ennonché\2'),
(u'\\b([sS])erivi(zi|zio)\\b', r'\1ervi\2'), # serivizio -> serivizio, serivito -> servito
(u'\\b([sS])ettentronal(\w+)\\b', r'\1ettentrional\2'), # settentronale -> settentrionale
(u'\\b([sS])i(f?)fat(t?)(\w+)\\b', r'\1iffatt\4'),
(u'\\b([sS])oprat(t?)ut(t?)(o|i|e)\\b', r'\1oprattutt\4'),
(u'\\b([sS])opranatu(\w+)\\b', r'\1oprannatu\2'),
(u'\\b([sS])opranom(\w+)\\b', r'\1oprannom\2'), # soprannome
(u'\\b([sS])oprav(v?)is(s?)(\w+)\\b', r'\1opravviss\4'), # sopravvissuto
(u'\\b([sS])piaggie\\b', r'\1piagge'),
(u'\\b([sS])otter(r?)a(.*?)\\b', r'\1otterra\3'),
(u'\\b([sS])ovraprezz(\w+)', r'\1ovrapprezz\2'), # sovraprezzo -> sovrapprezzo
(u"\\b([sS])post(o'|o’|o`|o′|ó)([\W])", r'\1postò\3'), # sposto' -> spostò
(u'\\b([sS])tat(iun|uin|iuni)tens(\w+)\\b', r'\1tatunitens\3'), #statiunitens statuintens --> statunitens
(u'\\b([sS])uprattuto\\b', r'\1oprattutto'),
(u'\\bsudett(\w+)\\b', r'suddett\1'), # sudetto -> suddetto
(u'\\b([sS])ug(g?)el(l?)(\w+)\\b', r'\1uggell\4'), # suggellare
(u'\\b([sS])usp[e|a]nce\\b', r'\1uspense'), # suspense
(u'\\b([tT])er(r?)it(t?)or(\w+)\\b', r'\1erritor\4'), # territorio
(u'\\b([tT])ranquil(l?)iz(z?)(\w+)\\b', r'\1ranquillizz\4'), # tranquilizzare -> tranquillizzare, tranquillizare -> tranquillizzare
(u'\\b([tT])on(n?)el(l?)at(a|e)\\b', r'\1onnellat\4'), # Tonnellata
(u'\\b([tT])ourn(ee|eé|eè|ees|eés|eès|èe|èes)\\b', r'\1ournée'), # tournée
(u'\\b([tT])raccie\\b', r'\1racce'), # traccie -> tracce
(u'\\b([tT])ralaltro\\b', r"\1ra l'altro"),
(u"\\b([tT])rov(o'|o’|o`|o′|ó)([\W])", r'\1rovò\3'), # trovo' -> trovò
(u"\\b([tT])riologia", r'\1rilogia'), # Triologia -> Trilogia
(u'\\b([tT])uttoggi(?!(.info))', r"\1utt'oggi"), # tutt'oggi
(u'\\b([tT])utt(uno|altro)\\b', r"\1utt'\2"), # tutt'uno tutt'altro
(u'\\b([uU])na stato\\b', r'\1no stato'), # Uno stato
(u'\\b([uU])na altro\\b', r'\1n altro'), # Uno altro
(u'\\b([uU])lteriol(mente|i|e)\\b', r'\1lterior\2'), # Ulteriolmente --> Ulteriormente
(u'\\b([Uu])n\'(altro|amico|animale|apposito|uomo)\\b', r'\1n \2'), # Un maschile con apostrofo
(u'\\b([Uu])n (altra|apposita|era|ipotesi)\\b', r"\1n'\2"), # Un femminile senza apostrofo
(u'\\b([Uu])n p(ò|ó)\\b', r"\1n po'"), # Un po'
(u'\\b([Uu])niversal ([Ss])erial ([Bb])us|USB\\b', r'USB'), # USB
(u'\\b([Uu])sc(i\'|i’|í|i`)([\W])', r'\1scì\3'), # usci' -> uscì (Da testare)
(u'\\b([Uu])tlizzat([a|e|i|o])\\b', r'\1tilizzat\2'), # utlizzat* --> utilizzato
(u"\\b([vV])(erit|elocit)(a\'|a’|a‘|a`|á)", r'\1\2à'), # verità - velocità
#(u'\\b(verran(n?)o)\\b', r'verranno'), Troppe eccezioni per lo spagnolo
(u'\\bveran(n?)o\\b', r'verranno'),
(u'\\b([vV])al d\'Aosta\\b', r"Valle d'Aosta"), # Val d'Aosta --> Valle d'Aosta
(u'\\b([vV])ideclip\\b', r'\1ideoclip'), # videclip --> videoclip
(u'\\b([vV])illagi(o?)\\b', r'\1illaggi\2'), # villagio --> villaggio
(u'\\b([vV])olont(a\'|a’|a‘|a`|á)', r'\1olontà'), # volonta' --> volontà
(u'\\b([yY])ou([tT])ube([^(.com|r)])\\b', r'YouTube\3'), # youyube --> YouTube
(r'Zimbawe', r'Zimbabwe'), # Zimbawe --> Zimbabwe
#(u'<<', r'«'),
#(u'>>', r'»'),
(u'[Kk]m[q2]', r'km²'), #(u'[Kk]m[q2][\.?]', r'km²'),
(r'\'\'\'Testo in grassetto\'\'\'', r''),
# Nomi stranieri
#(r'Istambul', r'Istanbul'), # Istambul -> Istanbul
(r'[Pp]hilarmonic', r'Philharmonic'), # Philarmonic -> Philharmonic
(r'[Pp]hilarmoniker', r'Philharmoniker'), # Philarmoniker -> Philharmoniker
##Da fixes.py
# replace <br> with a new line
(r'(?i)<br>', r'\n'),
# replace with a space
(r'(?i) ', r' '),
# Everything case-insensitive (?i)
# Keep in mind that MediaWiki automatically converts <br> to <br />
# when rendering pages, so you might comment the next two lines out
# to save some time/edits.
#(r'(?i)<br>', r'<br />'),
# linebreak with attributes
#(r'(?i)<br ([^>/]+?)>', r'<br \1 />'),
(r'(?i)<b>(.*?)</b>', r"'''\1'''"),
(r'(?i)<strong>(.*?)</strong>', r"'''\1'''"),
(r'(?i)<i>(.*?)</i>', r"''\1''"),
(r'(?i)<em>(.*?)</em>', r"''\1''"),
# horizontal line without attributes in a single line
(r'(?i)([\r\n])<hr[ /]*>([\r\n])', r'\1----\2'),
# horizontal line without attributes with more text in the same line
#(r'(?i) +<hr[ /]*> +', r'\r\n----\r\n'),
# horizontal line with attributes; can't be done with wiki syntax
# so we only make it XHTML compliant
(r'(?i)<hr ([^>/]+?)>', r'<hr \1 />'),
# a header where only spaces are in the same line
(r'(?i)([\r\n]) *<h1> *([^<]+?) *</h1> *([\r\n])', r"\1= \2 =\3"),
(r'(?i)([\r\n]) *<h2> *([^<]+?) *</h2> *([\r\n])', r"\1== \2 ==\3"),
(r'(?i)([\r\n]) *<h3> *([^<]+?) *</h3> *([\r\n])', r"\1=== \2 ===\3"),
(r'(?i)([\r\n]) *<h4> *([^<]+?) *</h4> *([\r\n])', r"\1==== \2 ====\3"),
(r'(?i)([\r\n]) *<h5> *([^<]+?) *</h5> *([\r\n])', r"\1===== \2 =====\3"),
(r'(?i)([\r\n]) *<h6> *([^<]+?) *</h6> *([\r\n])', r"\1====== \2 ======\3"),
# TODO: maybe we can make the bot replace <p> tags with \r\n's.
# external link in double brackets
(r'\[\[(?P<url>https?://[^\]]+?)\]\]', r'[\g<url>]'),
# external link starting with double bracket
(r'\[\[(?P<url>https?://.+?)\]', r'[\g<url>]'),
# external link with forgotten closing bracket
#(r'\[(?P<url>https?://[^\]\s]+)\r\n', r'[\g<url>]\r\n'),
# external link and description separated by a dash, with
# whitespace in front of the dash, so that it is clear that
# the dash is not a legitimate part of the URL.
(r'\[(?P<url>https?://[^\|\] \r\n]+?) +\| *(?P<label>[^\|\]]+?)\]', r'[\g<url> \g<label>]'),
# dash in external link, where the correct end of the URL can
# be detected from the file extension. It is very unlikely that
# this will cause mistakes.
(r'\[(?P<url>https?://[^\|\] ]+?(\.pdf|\.html|\.htm|\.php|\.asp|\.aspx|\.jsp)) *\| *(?P<label>[^\|\]]+?)\]', r'[\g<url> \g<label>]'),
# external link with forgotten closing bracket
#(r'\[(?P<url>https?://[^\]\s]+)\r\n', r'[\g<url>]\r\n'),
# external link ending with double bracket.
# do not change weblinks that contain wiki links inside
# inside the description
(r'\[(?P<url>https?://[^\[\]]+?)\]\](?!\])', r'[\g<url>]'),
# external link and description separated by a dash.
# ATTENTION: while this is a mistake in most cases, there are some
# valid URLs that contain dashes!
#(r'\[(?P<url>https?://[^\|\]\s]+?) *\| *(?P<label>[^\|\]]+?)\]', r'[\g<url> \g<label>]'),
# wiki link closed by single bracket.
# ATTENTION: There are some false positives, for example
# Brainfuck code examples or MS-DOS parameter instructions.
# There are also sometimes better ways to fix it than
# just putting an additional ] after the link.
(r'\[\[([^\[\]]+?)\](?!\])', r'[[\1]]'),
# wiki link opened by single bracket.
# ATTENTION: same as above.
(r'(?<!\[)\[([^\[\]]+?)\]\](?!\])', r'[[\1]]'),
# template closed by single bracket
# ATTENTION: There are some false positives, especially in
# mathematical context or program code.
(r'{{([^{}]+?)}(?!})', r'{{\1}}'),
# wikilink with same text
(r'(\[\[)([^\[\]\|]*)(\|\2)(\]\])', r'[[\2]]'),
],
'exceptions': {
'inside-tags': [
'hyperlink',
#'link',
'code',
'comment',
'timeline',
'gallery',
'math',
'pre',
'startspace',
'source',
'nowiki',
'sub',
#'ref',
#'quote',
#'template',
#'table',
] ,
'inside': [
r'bgcolor=(\"?)(.*)(\"?)',
r'border: (.*);',
r'<code>.*</code>', # because of code examples
r'[sS]tyle=(\"?)(.*)(\"?)',
r'\|[dD]urata(.*)',
r'\|[cC]opertina(.*)',
r'\|ForzaOrdinamento(.*)',
r'\|[iI](mmagine|mage)(.*)',
r'\|[lL]ogo(.*)',
r'\|[mM]appa(.*)',
r'\|[pP]anorama(.*)',
r'(?s)<[^>]+>',
#r'(?s)\{[^\}]+\}', # Rimosso per modificare i cita libro/pubblicazione
r'&[^;]+;',
#r'\[[\w\W]+\]',
r'(a|d).C.',
r'(?i)(s\.n\.c|s\.r\.l|s\.a\.s|s\.p\.a|s\.c\.p\.a)',
r'[sS]uperficie_km2',
#r'\[\[([Ii]mmagine|[fF]ile|[iI]mage)\:[^\]\|]+?\|', # esclude nome immagine
#r'\[\[(:?)([Cc]ategoria):(.*)\]\]', # esclude Categorie
#r'\[\[(:?)([Cc]ategory):(.*)\]\]', # esclude Categorie
#r'\[\[(:?)([Aa]iuto):(.*)\]\]', # esclude Aiuto
#r'\[\[(:?)([Pp]rogetto):(.*)\]\]', # esclude Progetto
#r'\[\[(:?)([Ww]ikipedia):(.*)\]\]', # esclude Progetto
#r'\[\[(\w\w|\w\w\w|\w\w\w\w|\w\w-\w\w\w|\w\w\w-\w\w|simple)\:[^\]]+?\]\]', # esclude interwiki ad altre lingue
r'\[\[(\w\w|\w\w\w|\w\w\w\w|\w\w-\w\w\w|\w\w\w-\w\w|\w\w-\w-\w\w\w|\w\w-\w\w\w-\w\w\w|\w\w\w-\w\w\w|\w\w\w-\w\w\w\w|simple|\w\w-classical|Wikipedia)\:[^\]]+?\]\]',
r'{{[Cc]oord\|(.*)',
r'{{ip\|(.*)',
r'{{[Ss]ic\|(.*)',
r'{{[tT]emplate(.*)',
r'{{Link AdQ|[\w}]+?}}', # esclude interwiki template interprogetto
r'{{[Ii]nterprogetto[^\}]+?}}', # esclude interwiki template interprogetto
r'\[\[([Ii]mmagine|[fF]ile)\:[^\]\|]+?\|', # esclude nome immagine
r'\[\[(:?)([Ii]mmagine|[Ii]mage|[Ww]ikimedia|[Aa]iuto|[Cc]ategoria|[Cc]ategory|[Pp]rogetto|[Ww]ikipedia|[Ww]|[Ww]iktionary|[Ww]ikt|[Ww]ikinews|n|[Ww]ikibooks|b|[Ww]ikiquote|q|[Ww]ikisource|s|[Ww]ikispecies|v|[Ff]oundation|[Cc]ommons|meta|m|[Ii]ncubator|mw|[Mm]ediazilla):(.*)\]\]', # esclude interwiki a progetti fratelli
],
'text-contains': [
r'{{cancella subito',
r'{{(WIP|wip|Wip)\|',
r'Kashyyyk',
r'(.*)[rR]sssf(.*)',
r'[gG]rrrl',
r'fara \(Longobardi\)',
r'ffffff',
r'fff.fr',
r'ppp_g',
r'/mmm',
r'Eccezzziunale',
r'rrringos',
r'whitesmalllower',
r'xxxHOLiC',
r'Schifffah(.*)',
r'Pipppero',
r'Deee-Lite',
r'gruppo spaziale',
r"Lil' Kim",
r"Vasyl'",
r"Černobyl'",
r"teritoriālais",
r"Ol' Dirty Bastard",
]
}
}