Home  

Random  

Nearby  



Log in  



Settings  



Donate  



About Wikipedia  

Disclaimers  



Wikipedia





User:Frietjes/infoboxgap.js





User page  

Talk  



Language  

Watch  

View source  


< User:Frietjes
 


Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
$.when( $.ready, mw.loader.using( 'jquery.textSelection' ) ).then(function() {

var $textbox = $( '#wpTextbox1' );
var myContent = $textbox.textSelection('getContents');
if(mw.config.get('wgNamespaceNumber') == 10 && myContent) {
 mw.loader.using(['mediawiki.util']).done( function() {
 var portletlink1 = mw.util.addPortletLink('p-tb', '#', 'Infobox gap', 't-gap', 'Insert a numbering gap in an infobox', '');
 $(portletlink1).click(function(e) {
  e.preventDefault();
  myContent = $textbox.textSelection('getContents'); // reload in case the content has changed after the script was loaded
  myContent = wpInfoboxGap(myContent);
  $textbox.textSelection('setContents', myContent);
    });
    var portletlink2 = mw.util.addPortletLink('p-tb', '#', 'Infobox renumber', 't-ren', 'Remove numbering gaps in an infobox', '');
    $(portletlink2).click(function(e) {
     e.preventDefault();
  myContent = $textbox.textSelection('getContents'); // reload in case the content has changed after the script was loaded
     myContent = wpInfoboxRenumber(myContent);
  $textbox.textSelection('setContents', myContent);
    });
 });
}

// -------------------------------------------------------------------------------- //
function wpInfoboxGap(txt)
{
 var i = 0;
 var nums = txt.match(/(?:label|data|[^a-z0-9]header|class)[0-9]+(?:[a-z][ ]*=|[ ]*=)/g);
 for(i = 0; i < nums.length; i++) {
   nums[i] = nums[i].replace(/[^0-9]*([0-9]+)[^0-9]*/, '$1');
 }
 nums = nums.sort(function(a,b){return a-b});
 var firstnum = Number(nums.shift());
 var lastnum = Number(nums.pop());

 var s = Number(prompt("Gap number (between " + String(firstnum) + " and " + String(lastnum) + ")?"));
 if ( (s >= firstnum) && (s <= lastnum + 1) ) {
  var firstgap = 0;
  for(i = s; i < lastnum; i++) {
   var re = new RegExp('(label|data|[^a-z0-9]header|class|rowstyle)' + String(i) + '([a-z][ ]*=|[ ]*=)', 'g');
   if(txt.search(re) < 0) {
    if(firstgap > 0) {
     lastnum = i - 1;
    }
   } else {
    firstgap = 1;
   }
  }
  for(i = lastnum; i >= s; i--) {
   var re = new RegExp('(label|data|[^a-z0-9]header|class|rowstyle)' + String(i) + '([a-z][ ]*=|[ ]*=)', 'g');
   txt = txt.replace(re,'$1' + String(i+1) + '$2');
   }
 }
 return txt;
}

function wpInfoboxRenumber(txt)
{
 var i = 0;
 var nums = txt.match(/(?:label|data|[^a-z0-9]header|class|rowstyle)[0-9]+(?:[a-z][ ]*=|[ ]*=)/g);
 for(i = 0; i < nums.length; i++) {
   nums[i] = parseInt(nums[i].replace(/[^0-9]*([0-9]+)[^0-9]*/, '$1'));
 }

 var k = 1;
 var currnum  = nums[0];
 var lastnum = nums[0];
 for(i = 0; i < nums.length; i++) {
   currnum = nums[i];
   if (currnum != lastnum) {
     k = k + 1;
     lastnum = currnum;
   }
   var re = new RegExp('(label|data|[^a-z0-9]header|class|rowstyle)' + String(nums[i]) + '([a-z][ ]*=|[ ]*=)', 'g');
   txt = txt.replace(re,'$1 WPFOOMARK ' + String(k) + '$2');
 }
 txt = txt.replace(/ WPFOOMARK /g, '');
 return txt;
}

});

Retrieved from "https://en.wikipedia.org/w/index.php?title=User:Frietjes/infoboxgap.js&oldid=1170413547"
 



Last edited on 14 August 2023, at 22:41  


Languages

 



This page is not available in other languages.
 

Wikipedia


This page was last edited on 14 August 2023, at 22:41 (UTC).

Content is available under CC BY-SA 4.0 unless otherwise noted.



Privacy policy

About Wikipedia

Disclaimers

Contact Wikipedia

Code of Conduct

Developers

Statistics

Cookie statement

Terms of Use

Desktop