Usuari:Forat Negre/unicodeConvertor.js

De la Viquipèdia, l'enciclopèdia lliure

Nota: Després de desar, heu de netejar la memòria cau del navegador per veure els canvis. En la majoria de navegadors amb Windows o Linux, premeu Ctrl+F5 o bé premeu Shift i cliqueu el botó "Actualitza" (Ctrl i "Actualitza" amb Internet Explorer). Vegeu més informació i instruccions per a cada navegador a Viquipèdia:Neteja de la memòria cau.

/* unicodeConvertor.js
--------------------------------
  Versió actual: 1.0
  Autor: Forat Negre
--------------------------------
  Aquest codi mostra els elements superíndex i subíndex amb el seu equivalent amb Unicode.
  Això permet copiar el text sense perdre el format al porta-retalls.

  El codi només afecta a la interfície dels articles sense fer-ne cap modificació.
  Per saber quan fer servir Unicode en un article, consulteu el llibre d'estil de la Viquipèdia.

  >> Registre de canvis
  Versió 1.0 [27 de febrer 2024]
  * Versió operativa superíndex/subíndex
*/


// Caràcters a substituir en versió superíndex
const unicodeSupDict = {'0':'⁰', '1':'¹', '2':'²', '3':'³',
  '4':'⁴', '5':'⁵', '6':'⁶', '7':'⁷', '8':'⁸', '9':'⁹'
};

// Caràcters a substituir en versió subíndex
const unicodeSubDict = {'0':'₀', '1':'₁', '2':'₂', '3':'₃',
  '4':'₄', '5':'₅', '6':'₆', '7':'₇', '8':'₈', '9':'₉'
};

$(function() {
  // Llista de classes on s'apliquen els canvis a Unicode
  var handlers = [
    ".mw-parser-output p",
    ".mw-parser-output td",
    ".mw-parser-output ul",
    ".mw-parser-output dl",
    ".WDI-box"
  ];

  // Aplicar els canvis a totes les classes definides a la llista
  var handlerIndex = 0;
  $(handlers.join(",")).filter(function(){
    if (this.innerText.length == 0) return;
    handlerIndex++;
    // Funcions superíndex
    removeTagsSup(this);
    applyUnicodeSup(this);
    // Funcions subíndex
    removeTagsSub(this);
    applyUnicodeSub(this);
  });

  // Canviar totes les etiquetes sup per la nova span.unicodeSup
  function removeTagsSup(element) {
    var transf = element.innerHTML;
    transf = transf.replaceAll(/<sup id=/gm, '<span class="unicodeSup" id=');
    transf = transf.replaceAll(/<\/sup>/gm, '</span>');
    element.innerHTML = transf;
  }

  // Canviar totes les etiquetes sub per la nova span.unicodeSub
  function removeTagsSub(element) {
    var transf = element.innerHTML;
    transf = transf.replaceAll(/<sub id=/gm, '<span class="unicodeSub" id=');
    transf = transf.replaceAll(/<\/sub>/gm, '</span>');
    element.innerHTML = transf;
  }

  // Aplicar canvis de text Unicode als unicodeSup
  function applyUnicodeSup(element) {
    $(".unicodeSup", element).filter(function(){
      var regex = new RegExp('[' + Object.keys(unicodeSupDict).join("") + ']', 'gm');
      this.innerText = this.innerText.replace(regex, function(x) { return unicodeSupDict[x] });
    });
  }

  // Aplicar canvis de text Unicode als unicodeSub
  function applyUnicodeSub(element) {
    $(".unicodeSub", element).filter(function(){
      var regex = new RegExp('[' + Object.keys(unicodeSubDict).join("") + ']', 'gm');
      this.innerText = this.innerText.replace(regex, function(x) { return unicodeSubDict[x] });
    });
  }
});