User:Mesidast/Curly Quotes.js

// // // Forked from User:GorillaWarfare/script/curlies.js // Forked by User:Mesidast. For full list of changes see User:Mesidast/Curly Quotes // Version 1.1 // // This script replaces curly quotes (“”‘’) with straight quotes ("') per the guidance at MOS:CURLY.

/**
 * TemplateScript adds configurable templates and scripts to the sidebar, and adds an example regex editor.
 * @see https://meta.wikimedia.org/wiki/TemplateScript
 * @update-token [[File:Pathoschild/templatescript.js]]

$.ajax("//tools-static.wmflabs.org/meta/scripts/pathoschild.templatescript.js", { dataType:"script", cache:true }).then(function {	pathoschild.TemplateScript.add([ {			name: "Curly Quotes", script: function(editor) { var txtBefore = editor.get; editor .replace(/[“”]/g, '"')					.replace(/[‘’]/g, "'");				var filesBefore = txtBefore.match(/\[\[(?:file|image):.+?(?:\||\]\])/gi) || [];				var filesAfter = editor.get.match(/\[\[(?:file|image):.+?(?:\||\]\])/gi) || [];				if ((new Set(filesBefore)).size == (new Set(filesAfter)).size) {					for (var i = 0; i < filesBefore.length; i++) {						if (filesBefore[i] !== filesAfter[i]) {							editor.replace(filesAfter[i], filesBefore[i]);						}					}				} else {					mw.notify("CHECK FILE NAMES BEFORE SUBMITTING this edit. Some file names have been changed and could not be restored as they now match another file name | Curly Quotes");				}				if (txtBefore !== editor.get) {					editor						.options({ minor: true })						.appendEditSummary("Replaced curly quotes per MOS:CURLY using a script")						.clickDiff;				} else {					mw.notify("No changes made | Curly Quotes"); }			}		},	]); }); //