User:Erutuon/common.js

/* globals $ */ //

$.ajax('//tools-static.wmflabs.org/meta/scripts/pathoschild.templatescript.js', { dataType:'script', cache:true }).then(function {	pathoschild.TemplateScript.add([ // add your own templates or scripts here {			name: 'proto wikt-lang', enabled: false, script: function(editor) { editor .replace(/'*\*?\[\[:?wikt:Reconstruction:Proto-Germanic\/([^\|\]]+)\|\*?([^\]]+)\]\]'*/g, '') .replace(/'*\*?\[\[:?wikt:Reconstruction:Proto-Indo-European\/([^\|\]]+)\|\*?([^\]]+)\]\]'*/g, '') .replace(/'*\*?\[\[:?wikt:Reconstruction:Proto-Hellenic\/([^\|\]]+)\|\*?([^\]]+)\]\]'*/g, '') .replace(/'*\*?\[\[:?wikt:Reconstruction:Proto-Slavic\/([^\|\]]+)\|\*?([^\]]+)\]\]'*/g, '') .appendEditSummary('simplified links to Wiktionary with Template:wikt-lang'); },		},		{			name: 'fix refs', enabled: false, script: function(editor) { editor .replace(/([^<>]*<\/ref\>)([\.\,\;\:\)]{1,3})/g, '$2$1') // Move refs after 1-3 punctuation characters.					.replace(/(\{\{[s|r?e]fn[^\}]+\}\})([\.\,\;\:\)]{1,3})/g, '$2$1') // Move refn and efn templates after 1-3 punctuation characters.					.replace(/(\{\{[Cc]itation needed[^\}]+\}\})([\.,;:\)]{1,3})/g, '$2$1'); // Move citation needed templates after 1-3 punctuation characters.			}		},		{			name: 'tag Amharic',			category: 'formatting',			enabled: false,			isMinorEdit: true,			script: function(editor) {				editor					.replace(/([ሀ-᎙ⶀ-ⷞꬁ-ꬮ]+)(?=[\s\)\;\:\.\,\!\|<\'])/g, '$1')					.appendEditSummary('tag Amharic text with the help of TemplateScript');			}		},		{			name: 'add IPA template',			category: 'formatting',			enabled: false,			script: function(editor) {				editor					.replaceSelection(function (selected) {						return selected							.replace(/(\/[^\/]+\/)/g, '') .replace(/(\^\+\])/g, ''); })					.appendEditSummary('added IPA template with the help of TemplateScript');			},		},		{			name: 'IPA link template cleanup',			category: 'formatting',			enabled: false,			script: function(editor) {				editor					.replace(/\/\{\{IPA ?link\|([^\}]+)\}\}\//g, )					.replace(/\[\{\{IPA ?link\|([^\}]+)\}\}\]/g, );			}		},		{			name: 'tag Armenian',			category: 'formatting',			isMinorEdit: true,			enabled: false,			script: function(editor) {				editor					.replace(/([Ա-֏ﬓ-ﬗ]+)(?=[\s\)\;\:\.\,\!\|<\'])/g, '$1') .replace(/\}\}(\'+)\{\{lang\|hy\|/g, '$1') .replace(/(\'+)(\{\{lang\|hy\|)/g, '$2$1') .appendEditSummary('tag Armenian text with the help of TemplateScript'); }		},	]); });

// Add or modify CharInsert entries window.charinsertCustom = { "Latin": ' ꟾ + ', "Arabic": ' + ', "Cyrillic": ' + + + + +', "Greek": ' ', "IPA": ' ◌ ', "Templates": ' + +', }; //

window.simplePopups = false;

switch (mw.config.get('wgNamespaceNumber')) { case 0: // main importScript('User:Gary/subjects age from year.js'); break; // User:Gary/subjects age from year.js case 2: // User: // User:Erutuon/ScriptInstaller.js importWiktionaryScript("User:Erutuon/ScriptInstaller.js"); importScript('User:PleaseStand/userinfo.js'); break; // User:PleaseStand/userinfo.js }

/* If text with the language attribute "grc" (Ancient and Medieval Greek) contains non-Greek scripts, marks it with the class "error".

function importWiktionaryScript(pageName) { return mw.loader.load("//en.wiktionary.org/w/index.php?title=" + pageName		+ "&action=raw&ctype=text/javascript"); }

window.withWiktionaryScript = function (pageName, successCallback, failureCallback) { return $.getScript('//en.wiktionary.org/w/index.php?title=' + pageName		+ '&action=raw&ctype=text/javascript') .done(successCallback) .fail(failureCallback); };

const LatnToGrek = { 'E': 'Ε', 'M': 'Μ', 'v': 'ν', 'o': 'ο', 'ó': 'ό', 'ò': 'ὸ', };

const grc = $("[lang=grc]"); if (grc.length > 0) { $.getScript(		"//en.wikipedia.org/w/index.php?action=raw&title=User:Erutuon/scripts/scriptRecognition.js&ctype=text/javascript&smaxage=21600&maxage=86400",		function {			const countScripts = window.countSignificantScripts;			const fixGreek = function(str) {				return str.replace(/./g, function(char) { return LatnToGrek[char] || char; });			};			grc.addClass( function { const innerHTML = this.innerHTML; for (const script in countScripts(innerHTML.replace(/<\/?[^>]+>/g, ""))) { if (script !== "Grek") { console.log("Non-Latin script " + script + " in "								+ innerHTML + " (corrected: " + fixGreek(innerHTML) + ")."); return "error"; }					}				});		}); }

//

if ([ "edit", "submit" ].includes(mw.config.get("wgAction"))) { importScript('User:Erutuon/scripts/charinsert-names.js'); var addApiResultToTextbox = function (funcName) { return function (str) { return withWiktionaryScript('User:Erutuon/scripts/apiWrapper.js', function {				if (!(funcName in apiWrapper))					throw new Error("Function " + funcName + " not in apiWrapper");				apiWrapper[funcName](str, function (result) { var $textbox = $('#wpTextbox1'); try { // avoid error: currSelection is undefined $textbox.textSelection('replaceSelection', result); } catch (e) { $textbox.textSelection('setContents', result); }				});			});		};	};	// Insert expanded wikitext into the text box, as if from // Special:ExpandTemplates. window.insertExpandedTemplate = addApiResultToTextbox('expandTemplates'); // Replace selection in text box with the wikitext of a page. window.insertWikitext = addApiResultToTextbox('getWikitext'); if (mw.config.get("wgCanonicalNamespace") === "") { importScript('User:Uglemat/RefMan.js'); // Backlink: User:Uglemat/RefMan.js importScript('User:Erutuon/scripts/cleanup.js'); // Backlink: User:Erutuon/scripts/cleanup.js } }

if ([ "css", "javascript", "Scribunto" ].includes(mw.config.get("wgPageContentModel"))) mw.loader.using("mediawiki.util").done(function {		importWiktionaryScript("MediaWiki:Gadget-CodeLinks.js");	});

if (mw.config.get("wgPageName") === "MediaWiki:Gadgets-definition") importWiktionaryScript("User:Erutuon/scripts/gadgets-definition.js");

mw.loader.using(["mediawiki.storage"], (function templatePreviewIIFE { "use strict";

// from wikt:User:Erutuon/scripts/storageUtils.js var StorageWrapper = function { this.cookiePreferences = { expires: 30, path: '/' }; };

StorageWrapper.prototype = { constructor: StorageWrapper, localStorageAvailable: mw.storage.get("localStorageTest") !== false, cookieAvailable: navigator.cookieEnabled, get storageAvailable { return this.localStorageAvailable || this.cookieAvailable; },	set: function(name, value) { if (this.localStorageAvailable) { localStorage[name] = value; } else { $.cookie(name, value, {}); }	},	get: function(name) { if (this.localStorageAvailable) { return localStorage[name]; } else { return $.cookie(name); }	},	remove: function(name) { if (this.localStorageAvailable) { delete localStorage[name]; } else { return $.removeCookie(name); }	}, };

// from wikt:User:Erutuon/scripts/templatePreview.js function TemplatePreviewStorage(key) { this.key = key; }

TemplatePreviewStorage.prototype = Object.create(StorageWrapper.prototype, {	rawStorage: {		get: function {			return StorageWrapper.prototype.get.call(this, this.key);		},		set: function (value) {			return StorageWrapper.prototype.set.call(this, this.key, value);		},	},	// Get and save storage in JSON format.	storage: {		get: function  {			try {				const previewPageNames = this.rawStorage;				if (previewPageNames) {					const previewPageNamesObject = JSON.parse(previewPageNames); // possible error					if (previewPageNamesObject)						return previewPageNamesObject;				}			} catch (e) {				console.log("Error parsing storage:", e);			}			return {};		},		set: function (previewPageNamesObject) {			try {				const previewPageNames = JSON.stringify(previewPageNamesObject); // possible error				this.rawStorage = previewPageNames;			} catch (e) {				console.log("Error stringifying object: ", e); }		},	},	get: { value: function (templateName) { return this.storage[templateName]; },	},	set: { value: function (templateName, previewPageName) { const storage = this.storage; storage[templateName] = previewPageName; this.storage = storage; },	}, });

const getDefaultPreviewPage = function (pageName) { pageName = pageName.replace(/_/g, " "); return (!/\/doc$/.test(pageName)) ? pageName + "/doc" : pageName; };

function doIt { const button = $("#wpTemplateSandboxPreview input"); const box = $("#wpTemplateSandboxPage input"); if (!(box.length > 0 && button.length > 0)) return; const storage = new TemplatePreviewStorage("previewPage"); window.templatePreviewStorage = storage; const pageName = mw.config.get("wgPageName"); if (box.val === "") { const pageToPreview = storage.get(pageName) || getDefaultPreviewPage(pageName); box.val(pageToPreview); }	button.click(function {		storage.set(pageName, box.val);	}); }

$(doIt);

}));

function getSearchTitles { return $('.mw-search-result-heading a').get .map(function (elem) {			return elem.textContent;		}); }

$('p').get.forEach(function (elem) {	if (elem.textContent.trim === "") {		elem.style.backgroundColor = 'pink';	} });

$(function {	const addZwnjBeforeCedilla = function(elem) {		for (var child = elem.firstChild; child !== null; child = child.nextSibling) {			if (child.processedCedilla)				continue;			switch (child.nodeType) {				case Node.ELEMENT_NODE: {					addZwnjBeforeCedilla(child); break;				}				case Node.TEXT_NODE: {					child.nodeValue = child.nodeValue						.normalize('NFD')						.replace(/\u0327/g, '\u200C\u0327')						.normalize('NFC');				}			}			child.processedCedilla = true;		}	};	$(":lang(mh)").get.forEach(addZwnjBeforeCedilla); });

(function findParserReport {	const iter = document.createNodeIterator(document.getElementById("content"), NodeFilter.SHOW_COMMENT, function { return NodeFilter.FILTER_ACCEPT; });	var node;	while ((node = iter.nextNode)) {		const value = node.nodeValue;		if (value.includes("NewPP limit report")) {			console.info(value.trim); break;		}	} });

mw.loader.load('//en.wikipedia.org/w/index.php?title=User:Nardog/RefRenamer.js&action=raw&ctype=text/javascript');