User:Writ Keeper/Scripts/syntaxChecker.js

$(document).ready(function {	if(mw.config.get("wgNamespaceNumber") != 0 && (mw.config.get("wgAction") == "edit" || mw.config.get("wgAction") == "submit") && $("#editform").length > 0)	{		regex = new RegExp(/(\{\[|\]\}|\[\{|\}\])/g);		$("#editform").on("submit", function(event) {			var previousErrors = [...$("#wpTextbox1").text.matchAll(regex)].map(match => match.index); var addedErrors = [...$("#wpTextbox1").val.matchAll(regex)].map(match => match.index); var prevCount = previousErrors.length; var addedCount = addedErrors.length; var indexA = 0; var indexP = 0; while(indexP >= 0 && indexA < addedCount && indexP < prevCount) {				if(previousErrors[indexP] == addedErrors[indexA]) {					indexA++; indexP++; }				else if( previousErrors[indexP] < addedErrors[indexA]) {					indexP++; }				else {					indexP = -1; }			}			if(indexP == -1 || (indexP == prevCount && indexA < addedCount)) {				$("#wpTextbox1").focus.prop({'selectionStart': addedErrors[indexA], 'selectionEnd': addedErrors[indexA]+2}) return(confirm("Mismatched curly and square braces detected! Are you sure you want to save this edit?")); }			else return true; });	} });