Utilisateur:Cynddl/JavascriptHeadings.js

Une page de Wikiversité, la communauté pédagogique libre.

Note : après avoir publié vos modifications, il se peut que vous deviez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

  • Firefox / Safari : maintenez la touche Maj (Shift) en cliquant sur le bouton Actualiser ou appuyez sur Ctrl + F5 ou Ctrl + R (⌘ + R sur un Mac).
  • Google Chrome : appuyez sur Ctrl + Maj + R (⌘ + Shift + R sur un Mac).
  • Internet Explorer / Edge : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl + F5.
  • Opera : appuyez sur Ctrl + F5.
function sourceheadings() {
     if ((wgNamespaceNumber == 2 || wgNamespaceNumber == 8) && wgTitle.lastIndexOf('.js') != -1 && wgAction == 'view') {
    var bc = document.getElementById('bodyContent');
    if (bc != null) {
      var pres = bc.getElementsByTagName('pre');
      if (pres.length == 1) {
        var spans = pres[0].getElementsByTagName('span');
        var numspans = spans.length;
        var j = 0;

        for (var i = 0; i < numspans; i++) {
          if (spans[i].className == 'coMULTI') {
           var res = null;
           if (spans[i].firstChild.nodeValue)
               // TODO \n+ doesn't seem to work here
               res = spans[i].firstChild.nodeValue.match(/\/\*\s*<\/pre>[\r\n\s]+(==+)(.*?)(==+)[\r\n\s]+<pre>\s*\*\//,"gi");
               res = spans[i].firstChild.nodeValue.match(/\/\*\s*<\/source>[\r\n\s]+(==+)(.*?)(==+)[\r\n\s]+<source lang=".*?">\s*\*\//,"gi");

            if (res!= null && res.length != 0) {
              j++;
              var l = res[1].length < res[3].length ? res[1].length : res[3].length;

              var h = document.createElement('h' + l);

              h.innerHTML = 
                '<span class="editsection">[<a href="' +
                  wgScript + '?title=' + wgPageName + '&amp;action=edit&amp;section=' + j +
                  '">edit</a>]</span><span class="mw-headline">' + res[2] + '</span>';

              pres[0].replaceChild(h, spans[i]);
            }
          }
        }
      }
    }
  }
}

$(sourceheadings);