MediaWiki:NumerAlpha.js: mudanças entre as edições

De Wikincat
Ir para navegação Ir para pesquisar
Sem resumo de edição
Sem resumo de edição
 
Linha 6: Linha 6:
function mainFunc() {
function mainFunc() {
function romanize(num) {
function romanize(num) {
if (isNaN(num)) return NaN;
if (Number.isNaN(num)) return NaN;
const digits = String(+num).split('');
const digits = String(+num).split('');
const key = [
const key = [
Linha 51: Linha 51:


for (let [i, element] of incrementElemsNumeral.entries()) {
for (let [i, element] of incrementElemsNumeral.entries()) {
element.innerHTML = `${++i}. ${element.innerHTML}`;
element.innerHTML = `${(i += 1)}. ${element.innerHTML}`;
}
}


Linha 59: Linha 59:


for (let [i, element] of incrementElemsRoman.entries()) {
for (let [i, element] of incrementElemsRoman.entries()) {
element.innerHTML = `${romanize(++i)}. ${element.innerHTML}`;
element.innerHTML = `${romanize((i += 1))}. ${element.innerHTML}`;
}
}
}
}

Edição atual tal como às 13h34min de 19 de agosto de 2024

// from: https://stackoverflow.com/questions/9083037
// To be used in Template:CardCatalog and other places as well

/* jshint esversion: 10 */

function mainFunc() {
  function romanize(num) {
    if (Number.isNaN(num)) return NaN;
    const digits = String(+num).split('');
    const key = [
      '',
      'C',
      'CC',
      'CCC',
      'CD',
      'D',
      'DC',
      'DCC',
      'DCCC',
      'CM',
      '',
      'X',
      'XX',
      'XXX',
      'XL',
      'L',
      'LX',
      'LXX',
      'LXXX',
      'XC',
      '',
      'I',
      'II',
      'III',
      'IV',
      'V',
      'VI',
      'VII',
      'VIII',
      'IX',
    ];
    let roman = '';
    let i = 3;
    while (i--) roman = (key[+digits.pop() + i * 10] || '') + roman;
    return Array(+digits.join('') + 1).join('M') + roman;
  }

  const incrementElemsNumeral = document.querySelectorAll(
    '.increment-numeralpha-numeral',
  );

  for (let [i, element] of incrementElemsNumeral.entries()) {
    element.innerHTML = `${(i += 1)}. ${element.innerHTML}`;
  }

  const incrementElemsRoman = document.querySelectorAll(
    '.increment-numeralpha-roman',
  );

  for (let [i, element] of incrementElemsRoman.entries()) {
    element.innerHTML = `${romanize((i += 1))}. ${element.innerHTML}`;
  }
}

if (document.readyState === 'complete' || document.readyState !== 'loading') {
  mainFunc();
} else {
  document.addEventListener('DOMContentLoaded', mainFunc);
}