Jump to content

User:Guywan/Scripts/RefCruncher.js

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Guywan (talk | contribs) at 17:16, 3 December 2019. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
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.
// [[Category:Wikipedia scripts]]
// <nowiki>
$(function()
{
	if(mw.config.get("wgAction") !== "edit") return;
	
	const debug = false;
	
	if(debug) console.log("Running");
	
	window.rc_refsCrunched = false;
	window.rc_refs = [];
	
	if(document.onkeyup !== null)
	{
		var original = document.onkeyup;
		
		document.onkeyup = function(e)
		{
			original(e);
			
			handle(e);
		};
	}
	else
	{
		document.onkeyup = handle;
	}
	
	function handle(e)
	{
		if(e.ctrlKey && e.altKey && e.which == 82)
		{
			run();
		}
	}
	
	function run()
	{
		if(debug) console.log("Activate");
		
		if(window.rc_refsCrunched)
		{
			uncrunchRefs();
			
			window.rc_refsCrunched = false;
		}
		else
		{
			crunchRefs();
			
			window.rc_refsCrunched = true;
		}
	}
	
	function crunchRefs()
	{	
		const txtarea = document.getElementById("wpTextbox1");
		
		var text = txtarea.value;
		var counter = 0;
		
		text = text.replace(/(<ref.*?\/>)|(<ref.*?>(.|\s)*?<\/ref>)/g, function(match)
		{
			if(debug) console.log(match);
			
			window.rc_refs.push(match);
			
			return `{ref#${counter++}}`;
		});
		
		txtarea.value = text;
	}
	
	function uncrunchRefs()
	{
		const txtarea = document.getElementById("wpTextbox1");
		
		var text = txtarea.value;
		
		text = text.replace(/\{ref#(\d+)\}/g, function(match, p1)
		{
			if(debug) console.log(match);
			
			return window.rc_refs[Number(p1)];
		});
		
		window.rc_refs = [];
		
		txtarea.value = text;
	}
});
// </nowiki>