User:TerraCyprus/infoboxgap.js

In today's world, User:TerraCyprus/infoboxgap.js has become a topic of great relevance and interest to a large number of individuals and sectors. Since its emergence, User:TerraCyprus/infoboxgap.js has generated debates and controversies in different areas, and its impact continues to be the subject of study and analysis. In this article, we will delve into the fascinating world of User:TerraCyprus/infoboxgap.js, exploring its dimensions, implications and possible future developments. Through a detailed and rigorous analysis, we aim to shed light on this exciting and significant topic, offering the reader a deep and enriching vision of User:TerraCyprus/infoboxgap.js.
jQuery(document).ready(function($) {

var myContent = document.getElementsByName('wpTextbox1');

if(mw.config.get('wgNamespaceNumber') != -1 && myContent) {
	mw.loader.using().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();
      wpInfoboxGap();
    });
    var portletlink2 = mw.util.addPortletLink('p-tb', '#', 'Infobox renumber', 't-ren', 'Remove numbering gaps in an infobox', '');
    $(portletlink2).click(function(e) {
      e.preventDefault();
      wpInfoboxRenumber();
    });
	});
}

// -------------------------------------------------------------------------------- //
function wpInfoboxGap()
{
 var i = 0;
 var nums = myContent.value.match(/(?:label|data|header|class)+(?:*=|*=)/g);
 for(i = 0; i < nums.length; i++) {
   nums = nums.replace(/*(+)*/, '$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|header|class|rowstyle)' + String(i) + '(*=|*=)', 'g');
 		if(myContent.value.search(re) < 0) {
 			if(firstgap > 0) {
	 			lastnum = i - 1;
 			}
 		} else {
 			firstgap = 1;
 		}
 	}
 	for(i = lastnum; i >= s; i--) {
 		var re = new RegExp('(label|data|header|class|rowstyle)' + String(i) + '(*=|*=)', 'g');
 		myContent.value = myContent.value.replace(re,'$1' + String(i+1) + '$2');
   }
 }
}

function wpInfoboxRenumber()
{
 var i = 0;
 var nums = myContent.value.match(/(?:label|data|header|class|rowstyle)+(?:*=|*=)/g);
 for(i = 0; i < nums.length; i++) {
   nums = parseInt(nums.replace(/*(+)*/, '$1'));
 }

 var k = 1;
 var currnum  = nums;
 var lastnum = nums;
 for(i = 0; i < nums.length; i++) {
   currnum = nums;
   if (currnum != lastnum) {
     k = k + 1;
     lastnum = currnum;
   }
   var re = new RegExp('(label|data|header|class|rowstyle)' + String(nums) + '(*=|*=)', 'g');
   myContent.value = myContent.value.replace(re,'$1 WPFOOMARK ' + String(k) + '$2');
 }
 myContent.value = myContent.value.replace(/ WPFOOMARK /g, '');
}

});