User:DavidL/regexsearch.js

From Meta, a Wikimedia project coordination wiki

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
//
// Création d'une page spéciale pour la recherche par expression régulière.
//   Spécial:RechercheRegex
//
// Auteur : DavidL
// Date   : 2021-07-27

function removeAllChildNodes(parent) {
    while (parent.firstChild) {
        parent.removeChild(parent.firstChild);
    }
}
function rs_searchSubmit(){
    var rx = document.querySelector('input#regex');
    var s = rx.value.replaceAll(/([<>\/])/g,'\\$1'); // .replaceAll(/([<>\\\/{}\[\]])/g,'\\$1');
	window.location='/w/index.php?title=Special:Search&search=insource:/'+s+'/&fulltext=Search&ns0=1';
}

function rs_createPage(){
var d = document.querySelector('h1.firstHeading');
removeAllChildNodes(d);
d.textContent = "Rechercher par expression régulière";
document.title = "Rechercher par expression régulière";

d = document.querySelector('div#bodyContent');
removeAllChildNodes(d);
appendDOM(d, ['div', {class:'mw-inputbox-centered'},
['form', {name:'searchbox', class:'searchbox', action:''},
['input', {id:'regex', class:'mw-inputbox-input mw-searchInput searchboxInput mw-ui-input mw-ui-input-inline',
name:'search', placeholder:'Expression régulière à chercher', size:'50', dir:'ltr', autocomplete:'off'}],
['input', {type:'button',name:'fulltext',class:'mw-ui-button',value:'Recherche regex',onClick:'rs_searchSubmit();return false;'}],
['input', {type:'hidden', name:'fulltext', value:'Search'}]
]]);
}

$(function(){
if (['Special:SearchRegex', 'Spécial:RechercheRegex'].includes(mw.config.values.wgPageName)) rs_createPage();
})