MediaWiki:Gadget-specialchars.js

Dans cet article, nous explorerons le monde fascinant de MediaWiki:Gadget-specialchars.js, en abordant son importance, son impact et sa pertinence dans de multiples domaines. Depuis ses origines jusqu'à son évolution actuelle, MediaWiki:Gadget-specialchars.js a fait l'objet de nombreuses études et débats qui ont contribué à élargir notre compréhension de ce sujet. Au fil de ces pages, nous nous plongerons dans son histoire, analyserons ses implications dans la société contemporaine et réfléchirons sur son avenir. De même, nous examinerons comment MediaWiki:Gadget-specialchars.js a transformé et continue de transformer divers domaines, de la science et de la technologie à l'art et à la culture, offrant une vision globale et multidisciplinaire pour comprendre sa complexité et sa portée. Rejoignez-nous pour cette visite passionnante de MediaWiki:Gadget-specialchars.js !
/*
 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 == "'") {
					m = m + "’";
					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;
				}
			}
		});
	});
}