MediaWiki:Gadget-specialchars.js

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.
/*
 Remplacement de certains caractères spéciaux lors de l'édition
 Auteur: ThomasV
 Importé depuis la Wikisource
*/

/* {{Catégorisation JS|specialchars}} */
/* global mw, $ */

if (mw.config.get('wgNamespaceNumber') !== 8
	&& !/^(javascript|Scribunto)$/i.test(mw.config.get('wgPageContentModel'))
) {
	$(function ($) { // eslint-disable-line no-unused-vars
		'use strict';

		var tb = document.getElementById("wpTextbox1");
		if (!tb) {
			return;
		}
		tb.addEventListener('keyup', function (e) {
			var key = e.keyCode;
			var startPos = tb.selectionStart;
			var endPos = tb.selectionEnd;
			if (endPos == startPos && ((key >= 65 && key <= 90) || key == 222 || key == 190)) {
				var m = tb.value.substring(startPos - 2, startPos);
				var m3 = tb.value.substring(startPos - 3, startPos);
				var f = tb.value.substring(startPos);
				var todo = true; var i = 2;
				if (m[1] == "'") {
					m = m[0] + "’";
					if (m == "’’") m = "''";
					if (m == "'’") m = "''";
				} else {
					switch (m) {
						case "^s" : m = "ſ"; break;
						case "`A" : m = "À"; break;
						case "`E" : m = "È"; break;
						case "`U" : m = "Ù"; break;
						case "´E" : m = "É"; break;
						case "*E" : m = "É"; break;
						default : todo = false;
					}
				}
				if (!todo) {
					m = m3; todo = true; i = 3;
					switch (m) {
						case "^oe" : m = "œ"; break;
						case "^ae" : m = "æ"; break;
						case "^OE" : m = "Œ"; break;
						case "^AE" : m = "Æ"; break;
						case "..." : m = "…"; break;
						default : todo = false;
					}
				}

				if (todo) {
					var textScroll = tb.scrollTop;
					var h = tb.value.substring(0, startPos - i);
					tb.value = h + m + f;
					tb.selectionStart = startPos - i + m.length;
					tb.selectionEnd = tb.selectionStart;
					tb.scrollTop = textScroll;
				}
			}
		});
	});
}