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 14:55, 5 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");
	
	rc_refsCrunched = false;
	rc_refs = [];
	
	// Don't overwrite an existing onkeyup handler.
	var o = document.onkeyup;
	document.onkeyup = document.onkeyup === null ? handle : e => { o(e); handle(e); };
	
	function handle(e)
	{
		if(e.ctrlKey && e.altKey && e.which == 82)
		{
			run();
		}
	}
	
	function run()
	{
		if(debug) console.log("Activate");
		
		if(rc_refsCrunched)
		{
			rc_refsCrunched = uncrunchRefs();
		}
		else
		{
			rc_refsCrunched = crunchRefs();
		}
	}
	
	function crunchRefs()
	{	
		const txtarea = document.getElementById("wpTextbox1");
		
		var text = txtarea.value;
		var counter = 0;
		
		text = text.replace(/(<ref.*?\/>)|(<ref.*?>(.|\s)*?<\/ref>)/g, match =>
		{
			if(debug) console.log(match);
			
			rc_refs.push(match);
			
			return `<ref ${counter++}/>`;
		});
		
		txtarea.value = text;
		
		return true;
	}
	
	function uncrunchRefs()
	{
		const txtarea = document.getElementById("wpTextbox1");
		
		var text = txtarea.value;
		
		text = text.replace(/\{ref#(\d+)\}/g, (match, p1) =>
		{
			if(debug) console.log(match);
			
			return rc_refs[Number(p1)];
		});
		
		window.rc_refs = [];
		
		txtarea.value = text;
		
		return true;
	}
});
// </nowiki>