Jump to content

User:DemonDays64/Scripts/Dumb quotes.js

From Wikipedia, the free encyclopedia
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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.
// See the documentation! Hope you like the script :-)
// NOTE: Uses a regex feature implemented fairly recently in some browsers (https://caniuse.com/?search=Lookbehind):
// Chrome: 10/2017 | Firefx: 6/2020 | Edge: 1/2020 | Safari: 3/2023 | Opera: 11/2017
// If running older browsers I believe it will work normally except that it will modify File links. The previous versions did not have this feature and used widely-supported Regex.
mw.loader.using('mediawiki.util', function () {

	$(document).ready(function () {
		var pageBeforeEdit;
		var modifiedPage;
		var previousSummary;

		//add a tab on the left
		var dumbQuotesLink = mw.util.addPortletLink("p-tb", "#", "Dumb quotes", "t-dumb-quotes", "Convert curly to straight quotes");
		$(dumbQuotesLink).click(function (event) {
			event.preventDefault();
			editPage();
		});

		function runRegex(regex, thingToRegex) {
			modifiedPage = thingToRegex.replace(regex.find, regex.replace);
		}

		function makeAndRunRegex(findRegex, replace) {
			var regexObject = {
				find: findRegex,
				replace: replace
			};
			runRegex(regexObject, modifiedPage);
		}

		function doEdit() {
			document.editform.wpTextbox1.value = modifiedPage;
		}

		function setEditSummary(summary, isMinor) {
			document.editform.wpMinoredit.checked = isMinor;
			previousSummary = document.editform.wpSummary.value;
			if (previousSummary !== "") {
				if (!previousSummary.includes(summary)) {
					document.editform.wpSummary.value = document.editform.wpSummary.value + " | " + summary;
				}
			}
			else {
				document.editform.wpSummary.value = summary;
			}
		}

		function showDiff() {
			if(typeof doaction !== 'undefined') doaction("diff");
		}

		function editPage() {
			pageBeforeEdit = document.editform.wpTextbox1.value;
			modifiedPage = pageBeforeEdit;

			makeAndRunRegex(/(?<!File:[^\]]*[^\]]*)(‘|’)/g, "'");
			makeAndRunRegex(/(?<!File:[^\]]*[^\]]*)(“|”)/g, '"');
			doEdit();
			setEditSummary("Replaced curly quotes with straight with [[User:DemonDays64/Scripts/Dumb quotes.js|script]] per [[MOS:CQ]].", true);
			showDiff();
		}
		
	});
});