Aller au contenu

Utilisateur:Olivier LPB/common.js

Une page de Wikipédia, l'encyclopédie libre.
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;

Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
/* <nowiki> */

/* var hotcat_text_ResumeScript="[[WP:WIMA|WIMA]]"; */
/* var RenommageCategorie_Text_Script = "[[Wikipedia:WIMA|WIMA]] [[Renommage de catégorie]] : "; */
obtenir('RenommageCategorie');
obtenir('CopyScape');
obtenir('BistroDuJour');
obtenir('PaletteDeluxe');

//Gadget DJ
importScript('Utilisateur:0x010C/script/DrapeauJaune.js');

/* début fonction de ref auto */
( function ( mw, $ ) {
'use strict';
function initializeRefTools() {
	if( !mw.user.options.get( 'showtoolbar' ) || window.refToolbarInstalled || $( '#wpTextbox1[readonly]' ).length ){
		return;
	}
	if ( mw.user.options.get( 'usebetatoolbar' ) ) {
		// Enhanced editing toolbar is on. Going to load RefToolbar 2.0a or 2.0b.
		if ( mw.user.options.get( 'usebetatoolbar-cgd' ) ) {
			// Dialogs are on. Loading 2.0b. (standard)
			$.getScript( '//en.wikipedia.org/w/index.php?title=MediaWiki:Gadget-refToolbarBase.js&action=raw&ctype=text/javascript', function() {
				mw.loader.using( [ 'ext.wikiEditor' ], function () {
					mw.loader.load( '//en.wikipedia.org/w/index.php?title=MediaWiki:RefToolbar.js&action=raw&ctype=text/javascript' );
				} );
			} );
		} else {
			// Dialogs are off. Loading 2.0a.
			mw.loader.using( 'ext.wikiEditor', function () {
				mw.loader.load( '//en.wikipedia.org/w/index.php?title=MediaWiki:RefToolbarNoDialogs.js&action=raw&ctype=text/javascript' );
			} );
		}
	} else {
		// Enhanced editing toolbar is off. Loading RefToolbar 1.0. (legacy)
		mw.loader.load( '//en.wikipedia.org/w/index.php?title=MediaWiki:RefToolbarLegacy.js&action=raw&ctype=text/javascript' );
	}
	window.refToolbarInstalled = true;
}
 
if ( $.inArray( mw.config.get( 'wgAction' ), [ 'edit', 'submit' ] ) !== -1 ) {
	$( initializeRefTools );
}
 
}( mediaWiki, jQuery ) );

/* fin */


function TodayDate() {
	var
		m = ["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"],
		today = new Date(),
		day = today.getDate(),
		year = today.getYear();

	if (year < 2000) {
		year = year + 1900;
	}

	return (day + " " + m[today.getMonth()] + " " + year);
}

$( function() {
	mw.loader.using( [ 'mediawiki.action.edit', 'ext.gadget.mediawiki.toolbar' ], function () {

		var ModeleLienweb = '<ref>{{Lien web |langue= |format= |auteur= |lien auteur= |coauteurs= |url= |titre= |jour= |mois= |année= |site= |citation= |consulté le='+ TodayDate() +' }}</ref>';
		mw.toolbar.addButton('//upload.wikimedia.org/wikipedia/commons/3/3c/Button_lienweb.png','LienWeb',ModeleLienweb,'','','mw-editbutton-lienweb');
		var ModeleJournal = "<ref>{{Article |langue= |auteur1= |titre= |périodique= |volume= |numéro= |jour= |mois= |année= |pages= |issn= |lire en ligne= }}</ref>";
		mw.toolbar.addButton('//upload.wikimedia.org/wikipedia/commons/b/b4/Button_lienjournal.png','Journal',ModeleJournal,'','','mw-editbutton-journal');
		var ModeleOuvrage = "<ref>{{Ouvrage |langue= |auteur1= |titre= |sous-titre= |éditeur= |collection= |lieu= |année= |volume= |tome= |pages totales= |passage= |isbn= |lire en ligne= }}</ref>";
		mw.toolbar.addButton('//upload.wikimedia.org/wikipedia/commons/e/ef/Button_cite_book.png','Ouvrage',ModeleOuvrage,'','','mw-editbutton-ouvrage');
	
		var Modelecatho = '{{Infobox Prélat catholique \n'
		+  '| nom                = \n'
		+  '| titre              = \n'
		+  '| image              = \n'
		+  '| taille image       = \n'
		+  '| légende            = \n'
		+  '| nom de naissance   = \n'
		+  '| date de naissance  = \n'
		+  '| lieu de naissance  = \n'
		+  '| date de décès      = \n'
		+  '| lieu de décès      = \n'
		+  '| ordination         = \n'
		+  '| consécration       = \n'
		+  '| création           = \n'
		+  '| titre cardinalice  = \n'
		+  '| ministère 1        = \n'
		+  '| date début 1       = \n'
		+  '| date fin 1         = \n'
		+  '| prédécesseur 1     = \n'
		+  '| successeur 1       = \n'
		+  '| ministère 2        = \n'
		+  '| date début 2       = \n'
		+  '| date fin 2         = \n'
		+  '| prédécesseur 2     = \n'
		+  '| successeur 2       = \n'
		+  '| fonc religieuses   = \n'
		+  '| fonc laïques       = \n'
		+  '| blason             = \n'
		+  '| blason simple      = \n'
		+  '| ornement extérieur = \n'
		+  '| devise             = \n'
		+  '| va                 = \n'
		+  '| ch                 = \n'
		+  '| cr                 = \n'
		+  '}}';
		mw.toolbar.addButton('//upload.wikimedia.org/wikipedia/commons/1/1e/Button_cross.png','Prelat catholique',Modelecatho,'','','mw-editbutton-catho');
		var Wikiprojetcatho = '{{Wikiprojet \n'
		+  '| catholicisme|faible \n'
		+  '| Vatican|faible  \n'
		+  '| avancement=ébauche \n'
		+  '}}';
		mw.toolbar.addButton('//upload.wikimedia.org/wikipedia/commons/f/fc/BTA-0.png','Wikiprojet catholique',Wikiprojetcatho,'','','mw-editbutton-wikicatho');
		var wikicathovatican = '|catholicisme|faible\n'
		+  '|Vatican|faible';
		mw.toolbar.addButton('//upload.wikimedia.org/wikipedia/commons/3/32/BTA-1.png','cathovatican',wikicathovatican,'','','mw-editbutton-cathovat');
		var Modeledocatho = '{{Infobox Document pontifical \n'
		+  '| titre     =  \n'
		+  '| blason    =  \n'
		+  '| type      =  \n'
		+  '| pape      =  \n'
		+  '| date      =  \n'
		+  '| sujet     =  \n'
		+  '| précédent =  \n'
		+  '| suivant   =  \n'
		+  '}}';
		mw.toolbar.addButton('//upload.wikimedia.org/wikipedia/commons/5/5b/BTA-2.png','Document pontifical',Modeledocatho,'','','mw-editbutton-docatho');
		var Modeledebutableau = '{| width=100% class="wikitable" \n'
		+'|- align=center \n'
		+'! width="8%"|Portrait \n'
		+'! width="8%"|Armoiries \n'
		+'! width="9%"|Épiscopat \n'
		+'! width="25%"|Titulaire \n'
		+'! width="50%"|Notes \n';
                var Synodebouton = 'Le {{date|9|septembre|2014|au Vatican}} il est nommé par le pape [[François (pape)|François]] : Père synodal pour la [[Synode des évêques sur la famille|troisième assemblée générale extraordinaire du synode des évêques sur la famille]] se déroulant du 5 au 19 octobre en qualité de président de la conférence épiscopale des évêques de XXXXXXXX<ref>{{Lien web |url=http://www.la-croix.com/Religion/Actualite/Liste-des-participants-au-Synode-sur-la-famille-2014-09-09-1203509 |titre=Liste des participants au Synode sur la famille |jour=9 |mois=septembre |année=2014 |site=la-croix.com |consulté le=10 septembre 2014}}</ref>.';
                mw.toolbar.addButton('//upload.wikimedia.org/wikipedia/commons/c/cc/BTA-3.png','Synode',Synodebouton,'','','mw-editbutton-synode');
		
		mw.toolbar.addButton('//upload.wikimedia.org/wikipedia/commons/b/bb/Button_%C3%A9bauche.png','Début tableau évêques',Modeledebutableau,'','','mw-editbutton-dbttbl');
		var evequedeplus = '|- \n'
		+'|align="center"|[[Fichier:Sin foto.svg|60px]]|| align="center"|[[Fichier:Blason à dessiner.svg|60px]] || align="center"|<small> 1180 à 1212 ||align="center"|[[Bertram de Metz|Bertram]]<br>59{{e}} évêque de Metz|| \n';
		mw.toolbar.addButton('//upload.wikimedia.org/wikipedia/commons/b/bd/Btn_plus.png','Ajouter un eveque',evequedeplus,'','','mw-editbutton-evqdp');
	} );
} );

obtenir('BandeauxEbauches');
obtenir('OngletPurge');
/*editSectionMenu++
editSectionMenu_CodeUrl[editSectionMenu] = "&test=0";
editSectionMenu_ModeleDebut[editSectionMenu] = "{{Test0}}";
editSectionMenu_ModeleParametres[editSectionMenu] = "non";*/

//var BandeauxEbauches_AutoEdit = false;     // Publication automatique                (true par défaut)
//var BandeauxEbauches_MinorEdit = false;    // Modification mineure                   (true par défaut)
//var BandeauxEbauches_TailleListe = 10;     // Nombre de suggestions                  (5 par défaut)
//var BandeauxEbauches_ListeBas = false;     // Affichage des suggestions vers le bas  (true par défaut)
//var BandeauxEbauches_KeyboardDelay = 10;   // Délai nouvelle suggestion (clavier)    (5 par défaut)


var alwaysEval = false; //mettez cette valeur à ''true'' si vous voulez que l'évaluation soit lancée automatiquement (à éviter en temps normal)
function initEvalProjectNames()
{
        evalProjectNames=new Array(); //liste de vos projets
        evalProjectNames.push("catholicisme");
        evalProjectNames.push("Vatican");
        evalProjectNames.push("Christianisme");
        evalProjectNames.push("Architecture chrétienne");
        evalProjectNames.push("Monachisme");
        evalProjectNames.push("Australie");
        evalProjectNames.push("Belgique");
        evalProjectNames.push("Canada");
        evalProjectNames.push("Espagne");
        evalProjectNames.push("États-Unis");
        evalProjectNames.push("Europe");
        evalProjectNames.push("France");
        evalProjectNames.push("Indonésie");
        evalProjectNames.push("Italie");
        evalProjectNames.push("Monde germanique");
        evalProjectNames.push("Paris");
        evalProjectNames.push("Pologne");
        evalProjectNames.push("Yvelines");
        evalProjectNames.push("Relations internationales");
}

	function launchOtto() {
		// Otto, assistant de recherche et de remplacement de texte
 
		var Otto = {
			_regs: [],
			init: function() {
				var elt = document.getElementById('wpSummaryLabel');
				var summary = document.getElementById('wpSummary');
				var field = document.getElementById('wpTextbox1');
				if(!elt || !summary || !field) { return; }
				var btnPrev = document.createElement('button');
				btnPrev.type = 'button';
				btnPrev.innerHTML = 'Précédent';
				elt.appendChild(btnPrev);
				var btn = document.createElement('button');
				btn.type = 'button';
				btn.innerHTML = 'Suivant';
				elt.appendChild(btn);
				var apply = document.createElement('button');
				apply.type = 'button';
				apply.innerHTML = 'Remplacer';
				apply.style.display = 'none';
				elt.appendChild(apply);
				var preview = document.createElement('code');
				preview.style.display = 'none';
				elt.appendChild(preview);
				var checkboxes = document.querySelectorAll('.editCheckboxes input[type="checkbox"]');
 
				var text;
				var lastIndexes = [];
				var lastIndex = null;
				var match = false;
				var matchedReg = false;
				var matchedRep = false;
				var lastPreview = false;
				var globalMessager = this.getMessager();
				var that = this;
 
				btnPrev.onclick = function() {
					if(lastIndexes.length) {
						var idx = lastIndexes.pop();
						for(var i=0,l=that._regs.length;i<l;i++) {
							that._regs[i].reg.lastIndex = idx;
						}
						lastIndex = null;
						btn.onclick();
					}
				};
				btn.onclick = function() {
					text = field.value;
					match = false;
					matchedReg = false;
					matchedRep = false;
					lastPreview = '';
					if(lastIndex !== null) {
						lastIndexes.push(lastIndex);
					}
					lastIndex = that._regs[0].reg.lastIndex;
 
					for(var i=0,l=that._regs.length;i<l;i++) {
						var curmatch = that._regs[i].reg.exec(text);
						if(curmatch) {
							if(!match || curmatch.index < match.index) {
								match = curmatch;
								matchedReg = that._regs[i].reg;
								matchedRep = that._regs[i].rep;
								field.focus();
								field.setSelectionRange(match.index, match.index + match[0].length);
							}
						}
					}
					if(match) {
						var messager = that.getMessager();
						lastPreview = matchedRep.apply(messager, match);
						preview.innerHTML = lastPreview.replace(/</g,'&lt;');
						preview.style.color = lastPreview == match[0] ? 'red' : '';
						preview.style.display = '';
						apply.style.display = '';
						for(i=0,l=that._regs.length;i<l;i++) {
							that._regs[i].reg.lastIndex = match.index + match[0].length;
						}
					} else {
						preview.innerHTML = lastPreview = '';
						preview.style.display = 'none';
						apply.style.display = 'none';
						for(i=0,l=that._regs.length;i<l;i++) {
							that._regs[i].reg.lastIndex = 0;
						}
					}
				};
				apply.onclick = function() {
					if(match) {
						var messager = that.getMessager();
						var newMatch = matchedRep.apply(messager, match);
						field.value = text = text.substring(0, match.index) + newMatch + text.substring(match.index + match[0].length);
						if(newMatch != match[0]) {
							globalMessager.mergeMessages(messager);
							summary.value = globalMessager.getFormattedMessage();
							[].forEach.call(checkboxes, function(input) {
								if(!input.checked) {
									input.checked = true;
								}
							});
						}
						for(var i=0,l=that._regs.length;i<l;i++) {
							that._regs[i].reg.lastIndex = match.index + newMatch.length;
						}
						field.focus();
						field.setSelectionRange(match.index, match.index);
						btn.onclick();
					}
				};
			},
			getMessager: function() {
				return {
					_messages: {},
					addMessage: function(msg, value) {
						if(value) {
							if(!this._messages[msg]) {
								this._messages[msg] = {};
							}
							this._messages[msg][value] = true;
						} else {
							this._messages[msg] = true;
						}
					},
					mergeMessages: function(messager) {
						for(var p in messager._messages) {
							if(messager._messages.hasOwnProperty(p)) {
								if(messager._messages[p] instanceof Object) {
									if(!this._messages[p]) {
										this._messages[p] = {};
									}
									for(var q in messager._messages[p]) {
										if(messager._messages[p].hasOwnProperty(q)) {
											this._messages[p][q] = messager._messages[p][q];
										}
									}
								} else {
									this._messages[p] = messager._messages[p];
								}
							}
						}
					},
					getFormattedMessage: function() {
						var messages = this._messages;
						var parts = Object.keys(messages);
						parts = parts.map(function(part) {
							if(messages[part] instanceof Object) {
								var items = Object.keys(messages[part]);
								return (items.length > 1 ?
									part.replace('(s)','s') + ' ' + items.slice(0,-1).join(', ') + ' et ' + items[items.length-1] :
									part.replace('(s)','') + ' ' + items[0]);
							}
							return part;
						});
						var str = '[[Utilisateur:Golmote/vector.js|Otto]]-matique : ' +
							(parts.length > 1 ?
								parts.slice(0,-1).join(', ') + ' et ' + parts[parts.length-1] :
								parts[0]);
						return str;
					}
				};
			},
			addPattern: function(reg, rep) {
				this._regs.push({reg: reg, rep: rep});
			}
		};
 
		// {{XIVe}} et {{XVe}} siècles => {{sp-|XIV|e|et|XV|e|s}}
		Otto.addPattern(/(\{\{[IVX]+e\}\}|[IVX]+\{\{e\}\}|[IVX]+(?:[èe]m)?e)( +\S+ +|[–-])(\{\{[IVX]+e\}\}|[IVX]+\{\{e\}\}|[IVX]+(?:[èe]m)?e) +siècle(s)?/g, function(match, s1, sep, s2, s) {
			this.addMessage('modèle(s)', '{{sp}}');
			return '{{sp-|' + s1.replace(/\{\{|(?:[èe]m)?e(?:\}\})?/g, '') + '|e|' + sep.replace(/^ +| +$/g, '') + '|' + s2.replace(/\{\{|(?:[èe]m)?e(?:\}\})?/g, '') + '|e' + (s ? '|s' : '') + '}}';
		});
 
		// {{XIVe}} siècle => {{s-|XIV|e}}
		Otto.addPattern(/(\{\{[IVX]+e\}\}|[IVX]+\{\{e\}\}|[IVX]+(?:[èe]m)?e) +siècle/g, function(match, s1) {
			this.addMessage('modèle(s)', '{{s}}');
			return '{{s-|' + s1.replace(/\{\{|(?:[èe]m)?e(?:\}\})?/g, '') + '|e}}';
		});
 
		// {{formatnum:2000}} Bretons => {{unité|2000|Bretons}}
		Otto.addPattern(/\{\{formatnum:(\d+)\}\} +(\[\[[^\]]+\]\][^\d\s(){}.,;:!?'"’<>=%à†+\[\]\|]*|[^\s(){}|.,;:!?'"’<>]+)/g, function(match, num, unit) {
			this.addMessage('modèle(s)', '{{unité}}');
			return '{{unité|' + num + '|' + unit + '}}';
		});
 
		// [[7 juin]] [[2015]] => {{date|7|juin|2015}}
		Otto.addPattern(/\[\[(\d+|1er) (janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)(?:\|[^\]]+)?\]\] \[\[(\d{4})\]\]/ig, function(match, d, m, y) {
			this.addMessage('modèle(s)', '{{date}}');
			return '{{date|'+d+'|'+m.toLowerCase()+'|'+y+'}}';
		});
 
		// 7 juin [[2015]] => {{date|7|juin|2015}}
		/*Otto.addPattern(/(\d+|1er|\{\{1er\}\}) (janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre) \[\[(\d{4})\]\]/ig, function(match, d, m, y) {
			this.addMessage('modèle(s)', '{{date}}');
			return '{{date|'+d.replace(/^\{\{|\}\}$/g,'')+'|'+m.toLowerCase()+'|'+y+'}}';
		});*/
 
		// {{1er juin}} [[2015]] => {{date|1er|juin|2015}}
		Otto.addPattern(/\{\{(1er) (janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)\}\} \[\[(\d{4})\]\]/ig, function(match, d, m, y) {
			this.addMessage('modèle(s)', '{{date}}');
			return '{{date|'+d+'|'+m.toLowerCase()+'|'+y+'}}';
		});
 
		// 7 juin 2015 => {{date|7|juin|2015}}
		/*Otto.addPattern(/(\d+|1er|\{\{1er\}\}) (janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre) (\d{4})/ig, function(match, d, m, y) {
			this.addMessage('modèle(s)', '{{date}}');
			return '{{date|'+d.replace(/^\{\{|\}\}$/g,'')+'|'+m.toLowerCase()+'|'+y+'}}';
		});*/
 
		// 2e => {{2e}}
		// 2{{e}} => {{2e}}
		// II{{e}} => {{IIe}}
		Otto.addPattern(/\b(\d+|(?!Le)[IVXL]+)(\{\{(?:er|è?re|e)\}\}|(?:er|è?re|e)\b(?!\}\}|\|))/g, function(match, n, exp) {
			this.addMessage('abréviation ordinale');
			return '{{' + n + exp.replace(/^\{\{|\}\}$/g,'').replace('ère','re') + '}}';
		});
 
		// n°4 => {{n°|4}}
		// n°IV => {{n°|{{IV}}}}
		Otto.addPattern(/\bn(?:[°º]|o\.?)(?: +|&nbsp;+)?(\d[\d-]*|[IVXL]+|\{\{[IVXL]+\}\})/g, function(match, n) {
			this.addMessage('modèle(s)', '{{n°}}');
			if(/([IVXL]+)(?=$|-)/.test(n)) {
				this.addMessage('accessibilité chiffres romains');
			}
			return '{{n°|'+n.replace(/([IVXL]+)(?=$|-)/g,'{{$1}}')+'}}';
		});
 
		// p. 4 => {{p.|4}}
		// pages 3-6 => {{p.|3-6}}
		Otto.addPattern(/\b(?:p(?:a?g|p)?\.?|[pP]ages?)(?: +|&nbsp;+)?(\d[\d–-]*)/g, function(match, n) {
			this.addMessage('modèle(s)', '{{p.}}');
			return '{{p.|'+n+'}}';
		});
 
		// 123 p. => 123{{nb p.}}
		// 123 pages => 123{{nb p.}}
		Otto.addPattern(/(\d+)(?: +|&nbsp;+)?(?:p(?:a?g)?\.\B|[pP]ages)/g, function(match, n) {
			this.addMessage('modèle(s)', '{{nb p.}}');
			return n + '{{nb p.}}';
		});
 
		// t. II => {{t.|{{II}}}}
		// tome Ier => {{t.|{{Ier}}}}
		// tomes 4-6 => {{t.|4-6}}
		Otto.addPattern(/\b(?:[tT](?:om)?\.?|[tT]omes?)(?: +|&nbsp;+)?(\d[\d–-]*|Ier|I\{\{er\}\}|\{\{Ier\}\}|[IVXL][IVXL–-]*|\{\{[IVXL]+\}\})/g, function(match, n) {
			this.addMessage('modèle(s)', '{{t.}}');
			if(/I\{\{er\}\}|(Ier|[IVXL]+)(?=$|[–-])/.test(n)) {
				this.addMessage('accessibilité chiffres romains');
			}
			return '{{t.|'+n.replace(/I\{\{er\}\}/,'{{Ier}}').replace(/(Ier|[IVXL]+)(?=$|[–-])/g,'{{$1}}')+'}}';
		});
 
		// chap. II => {{chap.|{{II}}}}
		// chapitre Ier => {{chap.|{{Ier}}}}
		// chapitres 4-6 => {{chap.|4-6}}
		Otto.addPattern(/\b(?:[cC]hap\.|[cC]h\.|[cC]hapitres?)(?: +|&nbsp;+)?(\d[\d–-]*|Ier|I\{\{er\}\}|\{\{Ier\}\}|[IVXL][IVXL–-]*|\{\{[IVXL]+\}\})/g, function(match, n) {
			this.addMessage('modèle(s)', '{{chap.}}');
			if(/I\{\{er\}\}|(Ier|[IVXL]+)(?=$|[–-])/.test(n)) {
				this.addMessage('accessibilité chiffres romains');
			}
			return '{{chap.|'+n.replace(/I\{\{er\}\}/,'{{Ier}}').replace(/(Ier|[IVXL]+)(?=$|[–-])/g,'{{$1}}')+'}}';
		});
 
		// n. II => {{n.|{{II}}}}
		// note 2 => {{n.|2}}
		Otto.addPattern(/\b(?:n\.|[nN]otes?)(?: +|&nbsp;+)?(\d[\d–-]*|[IVXL][IVXL–-]*|\{\{[IVXL]+\}\})/g, function(match, n) {
			this.addMessage('modèle(s)', '{{n.}}');
			if(/([IVXL]+)(?=$|[–-])/.test(n)) {
				this.addMessage('accessibilité chiffres romains');
			}
			return '{{n.|'+n.replace(/([IVXL]+)(?=$|[–-])/g,'{{$1}}')+'}}';
		});
 
		// vol. II => {{vol.|{{II}}}}
		// volume 2 => {{vol.|2}}
		Otto.addPattern(/\b(?:[vV]ol\.|[vV]olumes?)(?: +|&nbsp;+)?(\d[\d–-]*|[IVXL][IVXL–-]*|\{\{[IVXL]+\}\})/g, function(match, n) {
			this.addMessage('modèle(s)', '{{vol.}}');
			if(/([IVXL]+)(?=$|[–-])/.test(n)) {
				this.addMessage('accessibilité chiffres romains');
			}
			return '{{vol.|'+n.replace(/([IVXL]+)(?=$|[–-])/g,'{{$1}}')+'}}';
		});
 
		// col. II => {{col.|{{II}}}}
		// colonne 2 => {{col.|2}}
		Otto.addPattern(/\b(?:[cC]ol\.|[cC]olonnes?)(?: +|&nbsp;+)?(\d[\d–-]*|[IVXL][IVXL–-]*|\{\{[IVXL]+\}\})/g, function(match, n) {
			this.addMessage('modèle(s)', '{{col.}}');
			if(/([IVXL]+)(?=$|[–-])/.test(n)) {
				this.addMessage('accessibilité chiffres romains');
			}
			return '{{col.|'+n.replace(/([IVXL]+)(?=$|[–-])/g,'{{$1}}')+'}}';
		});
 
		// coll. => {{coll.}}
		Otto.addPattern(/\bcoll\.(?!\}\})/ig, function(match) {
			this.addMessage('modèle(s)', '{{coll.}}');
			return '{{coll.}}';
		});
 
		// op. cit. => {{op. cit.}}
		// Op.cit => {{op. cit.}}
		Otto.addPattern(/(?:'' *op\. ?cité?\.? *''|\bop\. ?cit\.(?!\}\})|\bop\. ?cité?\b(?!\.|\}\})|\bop cité?\b(?!\.|\}\}))/ig, function(match) {
			this.addMessage('modèle(s)', '{{op. cit.}}');
			return '{{op. cit.}}';
		});
 
		// ibid. => {{ibid.}}
		// '' ibidem '' => {{ibid.}}
		Otto.addPattern(/(?:'' *ibid(?:\.?|em) *''|\bibid(?:\.|em)(?!\}\})|\bibid\b(?!\.|\}\}))/ig, function(match) {
			this.addMessage('modèle(s)', '{{ibid.}}');
			return '{{ibid.}}';
		});
 
		// [[Louis XVI de France|Louis XVI]] => [[Louis XVI de France|{{nobr|Louis {{XVI}}}}]]
		Otto.addPattern(/(\[\[[^|\]]+\|(?:[^\[\]]*?))((?:\{\{nobr\|)?[^\s.,;:?!\[\]"'’|│]+(?:\s+|&nbsp;+|-)(?:\{\{(?:[IVX]+|[1I]er|[1I]re)\}\}|[1I]\{\{(?:er|re)\}\}|(?:[IVX]+|[1I]er|[1I]re)\b))(?=[^\]|]*\]\])/g, function(match, before, content) {
			if(/I\{\{(?:er|re)\}\}|(Ire|Ier|[IVX]+)$/.test(content)) {
				this.addMessage('accessibilité chiffres romains');
			}
			var newContent = content.replace(/([1I])\{\{(er|re)\}\}/,'{{$1$2}}')
				.replace(/([1I]re|[1I]er|[IVX]+)$/,'{{$1}}')
				.replace(/&nbsp;/g,' ');
			if(newContent.indexOf('{{nobr|')!==0 && newContent.indexOf(' ')>=0) {
				this.addMessage('modèle(s)', '{{nobr}}');
				newContent = '{{nobr|'+newContent+'}}';
			}
			return before
				+ newContent;
		});
 
		// [[Louis XVI de France]] => [[Louis XVI de France|{{nobr|Louis {{XVI}}}} de France]]
		Otto.addPattern(/\[\[((?:[^\[\]|]*?\s)?)([^\s.,;:?!\[\]]+(?:\s+|&nbsp;+|-)(?:\{\{(?:[IVX]+|[1I]er|[1I]re)\}\}|[1I]\{\{(?:er|re)\}\}|(?:[IVX]+|[1I]er|[1I]re)\b))([^\]|]*)\]\]/g, function(match, before, content, after) {
			if(/I\{\{(?:er|re)\}\}|(Ire|Ier|[IVX]+)$/.test(content)) {
				this.addMessage('accessibilité chiffres romains');
			}
			var newContent = content.replace(/([1I])\{\{(er|re)\}\}/,'{{$1$2}}')
				.replace(/([1I]re|[1I]er|[IVX]+)$/,'{{$1}}')
				.replace(/&nbsp;/g,' ');
			if(newContent.indexOf('{{nobr|')!==0 && newContent.indexOf(' ')>=0) {
				this.addMessage('modèle(s)', '{{nobr}}');
				newContent = '{{nobr|'+newContent+'}}';
			}
			return '[[' + before + content + after + '|'
				+ before
				+ newContent
				+ after + ']]';
		});
 
		// Louis XVI => {{nobr|Louis {{XVI}}}}
		Otto.addPattern(/(?:\{\{nobr\|)?[^\s.,;:?!\[\]|│─'"’=<>{}()#*\/]+(?:\s+|&nbsp;+|-)(?:\{\{(?:[IVX]+|[1I]er|[1I]re)\}\}|[1I]\{\{(?:er|re)\}\}|(?:[IVX]+|[1I]er|[1I]re)\b)/g, function(content) {
			if(/I\{\{(?:er|re)\}\}|(Ire|Ier|[IVX]+)$/.test(content)) {
				this.addMessage('accessibilité chiffres romains');
			}
			var newContent = content.replace(/([1I])\{\{(er|re)\}\}/,'{{$1$2}}')
				.replace(/([1I]re|[1I]er|[IVX]+)$/,'{{$1}}')
				.replace(/&nbsp;/g,' ');
			if(newContent.indexOf('{{nobr|')!==0 && newContent.indexOf(' ')>=0) {
				this.addMessage('modèle(s)', '{{nobr}}');
				newContent = '{{nobr|'+newContent+'}}';
			}
			return newContent;
		});
 
		// {{unité|2000}} Bretons => {{unité|2000|Bretons}}
		Otto.addPattern(/\{\{unité\|(\d+)\}\} +(?!janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre|[\-–])(\[\[[^\]]+\]\][^\d\s(){}.,;:!?'"’<>=%à†+\[\]\|]*|[^\d\s(){}.,;:!?'"’<>=%à†+]+)/ig, function(match, num, unit) {
			this.addMessage('modèle(s)', '{{unité}}');
			return '{{unité|' + num.replace(/\s+/g,'') + '|' + unit + '}}';
		});
 
		// 2 000 Bretons => {{unité|2000|Bretons}}
		Otto.addPattern(/\b(\d(?: ?\d)*) +(?!janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre|[\-–])(\[\[[^\]]+\]\][^\d\s(){}.,;:!?'"’<>=%à†+\[\]\|]*|[^\d\s(){}.,;:!?'"’<>=%à†+]+)/ig, function(match, num, unit) {
			this.addMessage('modèle(s)', '{{unité}}');
			return '{{unité|' + num.replace(/\s+/g,'') + '|' + unit + '}}';
		});
 
		// (V) => ({{V}})
		Otto.addPattern(/\((?:[IVX]+|Ier|Ire|I\{\{er\}\})\)/g, function(content) {
			this.addMessage('accessibilité chiffres romains');
			var newContent = content.replace(/I\{\{er\}\}/,'{{Ier}}')
				.replace(/(Ire|Ier|[IVX]+)/,'{{$1}}');
			return newContent;
		});
 
		Otto.init();
	}

/* </nowiki> */