User:Erutuon/common.js: difference between revisions

From Wiktionary, the free dictionary
Jump to navigation Jump to search
Content deleted Content added
back to the previous form
trying Dixtosa's new functions for skipping to posts
Line 351: Line 351:
importScript('User:Dixtosa/rhyme.js');
importScript('User:Dixtosa/rhyme.js');
importScript('User:Dixtosa/expandASADRS.js');
importScript('User:Dixtosa/expandASADRS.js');
importScript('User:Dixtosa/sandbox.js');
importScript('User:Dixtosa/RushToSubsection.js');
// </nowiki>
// </nowiki>

Revision as of 16:40, 14 May 2017

// <nowiki>

$.ajax('//tools-static.wmflabs.org/meta/scripts/pathoschild.templatescript.js', { dataType:'script', cache:true }).then(function() {
	pathoschild.TemplateScript.add([
		{
			name: 'root cat ',
			isMinorEdit: true,
			category: 'templates',
			script: function(editor) {
				var ArabicLetter = '[ءبت-غف-وي]';
				var ArabicRoot = RegExp('(' + ArabicLetter + ') (' + ArabicLetter + ') (' + ArabicLetter + ')', 'g');
				editorn
					.replace(
						ArabicRoot,
						'\n{{ar-root|$1|$2|$3|notext=1}}'
						)
					.appendEditSummary('add root category');
			}
		},
		{
			name: 'convert to non-gloss def',
			isMinorEdit: true,
			category: 'templates',
			script: function(editor) {
				editor
					.replace(/# ?(\{\{senseid[^\}]+\}\}) ?(\{\{(?:lb|label)[^\}]+\}\}) ?(.+)/g, '# $1 $2 {{non-gloss definition|$3}}')
					.replace(/# ?(\{\{(?:lb|label)[^\}]+\}\}) ?(.+)/g, '# $1 {{non-gloss definition|$2}}')
					.replace(/# ?([^\:\*].+)/g, '# {{non-gloss definition|$1}}')
					.appendEditSummary('add [[T:non-gloss definition]]');
			}
		},
		{
			name: 'selection to non-gloss def',
			isMinorEdit: true,
			category: 'templates',
			script: function(editor) {
				editor
					.replaceSelection(function(selected) {
						var hasNumberedList = selected.includes('#');
						if ( hasNumberedList ) { return selected
							.replace(/# ?(\{\{senseid[^\}]+\}\}) ?(\{\{(?:lb|label)[^\}]+\}\}) ?(.+)/g, '# $1 $2 {{non-gloss definition|$3}}')
							.replace(/# ?(\{\{(?:lb|label)[^\}]+\}\}) ?(.+)/g, '# $1 {{non-gloss definition|$2}}')
							.replace(/# ?(.+)/g, '# {{non-gloss definition|$1}}');
						} else {
							return '{{non-gloss definition|' + selected + '}}';
						}
					})
					.appendEditSummary('add [[T:non-gloss definition]]');	
			}
		},
		{
			name: 'combine POS cats',
			category: 'templates',
			isMinorEdit: true,
			script: function(editor) {
				editor
					.replace(/\[\[Category:((?:[A-Z][\w]+ ?)+) ([a-z][^\]]+)\]\]/g, '{{catlangname|{{subst:#invoke:languages/templates|getByCanonicalName|$1}}|$2}}')
					.replace(/(.*getByCanonicalName\|([^\|\}]+)}}(?:\|[^\|\}]+)+)}}\n?.*getByCanonicalName\|\2}}((?:\|[^\|\}]+)+)/g, '$1$3')
					.replace(/(.*getByCanonicalName\|([^\|\}]+)}}(?:\|[^\|\}]+)+)}}\n?.*getByCanonicalName\|\2}}((?:\|[^\|\}]+)+)/g, '$1$3')
					.replace(/(.*getByCanonicalName\|([^\|\}]+)}}(?:\|[^\|\}]+)+)}}\n?.*getByCanonicalName\|\2}}((?:\|[^\|\}]+)+)/g, '$1$3');
			}
		},
		{
			name: '\'\'\' → ;',
			category: 'formatting',
			isMinorEdit: true,
			script: function(editor) {
				editor.replace(/\'\'\'([^\']+)\'\'\'/g, '; $1');
			}
		},
		{
			name: 'chars (grc)',
			category: 'templates',
			script: function(editor) {
				editor.replaceSelection(function(selected){
					var hasEquals = selected.includes("=");
					var param = '';
					if ( hasEquals ) {
						param = '2=' + selected;
					} else {
						param = selected;
					}
					return '{{subst:chars|grc|' + param + '}}';
				});
			}
		},
		{
			name: 'templatize categories',
			category: 'templates',
			script: function(editor) {
				editor
					.replace(/\[\[Category:(\w+)\:([\w ]+)\]\]\n\[\[Category:\1\:([\w ]+)\]\]\n\[\[Category:\1\:([\w ]+)\]\]/g, '{{C|$1|$2|$3|$4}}')
					.replace(/\[\[Category:(\w+)\:([\w ]+)\]\]\n\[\[Category:\1\:([\w ]+)\]\]/g, '{{C|$1|$2|$3}}');
			}
		},
		{
			name: 'ar-root nocat',
			isMinorEdit: true,
			enabled: false,
			category: 'templates',
			script: function(editor) {
				editor
					.replace(/(\{\{ar-root\|[^\}]+)/g, '$1|nocat=1')
					.appendEditSummary('removed from Arabic category');
			}
		},
		{
			name: 'grc verb',
			editSummary: '',
			script: function(editor) {
				editor
					.replace(/conj-present(\|form=[^\|\}]+)\|[^\|\}]+(\|[^\|\}]+)\|[^\|\}]+/g, 'conj|pres$1$2')
					.replace(/conj-present\|[^\|\}]+(\|[^\|\}]+)\|[^\|\}]+/g, 'conj|pres$1')
					.replace(/-(perf)ect[^\|\}]*(\|form[^\|\}]+)\|[^\|\}]+\|[^\|\}]+(\|[^\|\}]+)\|[^\|\}]+\|[^\|\}]+(\|[^\|\}]+)/g, '|$1$2$3$4')
					.replace(/-(perf)ect[^\|\}]*\|[^\|\}]+\|[^\|\}]+(\|[^\|\}]+)\|[^\|\}]+\|[^\|\}]+(\|[^\|\}]+)/g, '|$1$2$3')
					.replace(/-(perf)ect[^\|\}]*/g, '|$1')
					.replace(/conj-(imperf)ect(\|form=[^\|\}]+)\|[^\|\}]+\|[^\|\}]+(\|[^\|\}]+)/g, 'conj|$1$2$3')
					.replace(/conj-(imperf)ect\|[^\|\}]+\|[^\|\}]+(\|[^\|\}]+)/g, 'conj|$1$2')
					.replace(/-aorist-(\d\|form[^\|\}]+)\|[^\|\}]*\|[^\|\}]*(\|[^\|\}]*)\|[^\|\}]*(\|[^\|\}]+)\|[^\|\}]+\|[^\|\}]+(\|[^\|\}]+\|[^\|\}]+)\|[^\|\}]+/g, '|aor-$1$2$3$4')
					.replace(/-aorist-(\d)\|[^\|\}]*\|[^\|\}]*(\|[^\|\}]*)\|[^\|\}]*(\|[^\|\}]*)\|[^\|\}]*\|[^\|\}]+(\|[^\|\}]+\|[^\|\}]+)\|[^\|\}]+/g, '|aor-$1$2$3$4')
					.replace(/-aorist-(\d)/g, '|aor-$1')
					.replace(/-pluperfect[^\|\}]*(\|form[^\|\}]+)\|[^\|\}]+(\|[^\|\}]+\|[^\|\}]+\|[^\|\}]+)/g, '|plup$1$2')
					.replace(/-pluperfect[^\|\}]*\|[^\|\}]+(\|[^\|\}]+\|[^\|\}]+\|[^\|\}]+)/g, '|plup$1')
					.replace(/-pluperfect[^\|\}]*/g, '|plup')
					.replace(/-(fut)ure(\|form[^\|\}]+)\|[^\|\}]+(\|[^\|\}]+)\|[^\|\}]+((?:\|[^\|\}]+)?)/g, '|$1$2$3$4')
					.replace(/-(fut)ure\|[^\|\}]+(\|[^\|\}]+)\|[^\|\}]+(\|[^\|\}]+)/g, '|$1$2$3')
					.replace(/-future-/g, '|fut-')
					.replace(/-future ?(p?)[a-z]*(?=\|)/g, '|fut$1')
					.replace(/([a-z]+)σ/g, '$1')
					.replace(/grc-alt/g, 'alter|grc')
					.replace(/etyl(\|[\w\-]+)\|grc}} {{m\1/g, 'der|grc$1')
					.replace(/grc-cite/g, 'Q|grc')
					.replace(/(\{\{m\|[^\|\}]+\|[^\|\}]+\|)\|/g, '$1t=')
					.replace(/ I /g, ' to ')
					.replace(/\{\{prefix\|([^\|\}]+\|[^\|\}]+)/g, '{{affix|$1-')
					.replace(/\|sc=Deva/g, '')
					.replace(/\{\{grc-ipa.*/g, '{{grc-IPA|}}')
					.replace(/\|gloss/g, '|t')
					.replace(/(\{\{...?fix)(\|[^\}]+)\|lang=([\w-]+)/g, '$1|$3$2')
					.replace(/titleapp\=\(\{\{grc\-(\w+)\}\}\)/g, 'dial=$1')
					.replace(/m\|grc\|([^\|\}]+)\|(?:\||t\=)([^\|\}]+)\}\} \+ \{\{m\|grc\|([^\|\}]+)\|(?:\||t=)([^\|\}]+)/g, 'affix|grc|$1|t1=$2|$3|t2=$4')
					.replace(/([^\.] |\()(?:[A-Z][a-z]+ )?[A-Z][a-z]+ \{\{m(\|[^\|\}]+)/g, '$1{{cog$2')
					.replace(/con-ε/g, 'con-e')
					.replace(/con-α/g, 'con-a')
					.replace(/con-ο/g, 'con-o')
					.replace(/-νυμι/g, '-numi')
					.replace(/-((?:pres|imperf))(?:ent|ect)/g, '|$1')
					.replace(/(pres[^\|\}]+)((?:\|form[^\|\}]+)?)(\|[^\|\}]+)\|[^\|\}]+/g, '$1$2$3')
					.replace(/(imperf[^\|\}]+)((?:\|form[^\|\}]+)?)\|[^\|\}]+(\|[^\|\}]+)/g, '$1$2$3')
					.replace(/(grc-verb)[^\}]+/g, '$1')
					.replace(/grc-pron(?:(\|)(?:w=)?)?/g, 'grc-IPA$1')
					.replace(/(grc-conj.+)\|[^\}\|]+η[θτ][ιῐ](?=\W)/g, '$1')
					.replace(/to am(?=\W)/g, 'to be')
					.appendEditSummary('updated conjugation tables and other cleanup, with the help of [[m:TemplateScript|TemplateScript]]');
			}
		},
		{
			name: 'etym link cleanup',
			isMinorEdit: true,
			category: 'templates',
			script: function(editor) {
				editor
					.replace(/\{\{etyl\|([^\|\}]+)\|([^\|\}]+)\}\} (?:\'\')?\[\[([^\]]+)\]\](?:\'\')?/g, '{{der|$2|$1|$3}}')
					.appendEditSummary('fix link with the help of [[m:TemplateScript|TemplateScript]]');
			}
		},
		{
			name: 'Lua code',
			isMinorEdit: true,
			category: 'templates',
			script: function(editor) {
				editor.replaceSelection(function(selected) {
					var hasEquals = selected.includes("=");
					var param = '';
					if ( hasEquals ) {
						param = '2=' + selected;
					} else {
						param = selected;
					}
					return '{{code|lua|' + param + '}}';
					
				});
			},
		},
		{
			name: 'swung dash',
			enabled: false,
			category: 'characters',
			script: function(editor) {
				editor.replace(/~/g, '⁓');
			}
		},
		{
			name: 'subst',
			category: 'templates',
			script: function(editor) {
				editor.replaceSelection(function (selected) {
					return selected
						.replace(/\{\{/g, '{{subst:');
				});
			}
		},
		{
			name: 'der and rel',
			category: 'templates',
			script: function(editor) {
				editor.replaceSelection(
					function (selected) {
						var sectionType = ( selected.match(/=((?:Der|Rel))/)[1].toLowerCase() || 'der' );
						// Use lang in first l template.
						var langCode = selected.match(/\{\{l\|([a-z-]+)\|[^\|\}]+/)[1];
						var numberOfColumns = ( selected.match(/\{\{top(\d)\}\}/)[1] || '3' );
						
						return selected
								.replace(/\n\* ?\{\{l\|[^\|\}]+\|([^\|\}]+)\}\}/g, '\n|$1')
								.replace(/\n\{\{[^\}]+\}\}/g, '')
								.replace(
									/((?:\n\|[^\|\}\n]+)+)/g,
									'\n{{' + sectionType + numberOfColumns + '\n|lang=' + langCode + '$1\n}}'
									);
					}
				);
			}
			
		},
		{
			name: 'letters template',
			enabled: false,
			category: 'templates',
			script: function(editor) {
				var content = editor.get();
				var hasDoc = content.includes('list doc');
				var lang = content.match(/l(?:-self)\|([^\|\}]+)/)[1];
				var nativeName = content.match(/\|hypernym=(?:\{\{l(?:-self)?\|[^\|\}]+\|)?([^\|\}\n]+)(?:\|[^\|\}]+)?(?:\}\})?/);
				var nativeNameParameter = '';
				if ( nativeName ) {
					nativeNameParameter = '|native name=' + nativeName[1]  + '\n';
				} else {
					nativeNameParameter = '';
				}
				editor
					.replace(
						/list helper 2(?:\n\|.+)+\n\|list=/g,
						'letters\n|lang=' + ( lang || '' ) + '|sc=Latn\n' + nativeNameParameter
						)
					.replace(
						/(?:<!--[^-]+-->)?(\(?)\{\{l(?:-self)?\|[^\|\}]+\|([^\|\}]+)(?:\|[^\|\}]+)?\}\}\s*\{\{l(?:-self)?\|[^\|\}]+\|([^\|\}]+)(?:\|[^\|\}]+)?\}\}(\)?)(?:,? )?/g,
						'|$1$2/$3$4'
						)
					.replace(
						/(?:<!--[^-]+-->)?(\(?)\{\{l(?:-self)?\|[^\|\}]+\|([^\|\}]+)(?:\|[^\|\}]+)?\}\}(\)?)(?:,? )?/g,
						'|$1$2$3'
						)
					.replace(/\|([^\/])\/([^\/])/g, '|$1$2')
					.replace(/<!--[^-]+-->(?=\}\})/g, '')
					.replace(/(\}\})(<noinclude>)/, '$1<!--\n\n-->$2')
					.replace(/\s+$/, '')
					.appendEditSummary('converted to [[Template:letters]] with the help of [[m:TemplateScript|TemplateScript]]');
				
				if ( !hasDoc ) {
					editor
						.append('<!--\n\n--><noinclude>\n{{list doc}}\n</noinclude>')
						.appendEditSummary('added [[Template:list doc]] for documentation');
				}
			}
		},
		{
			name: 'fix T:lang',
			enabled: false,
			script: function(editor) {
				editor
					.replace(/\{\{(lang\|[^\|\}]+\|[^\|\}]+)\|\}\}/g, '{{$1}}')
					.replace(/\{\{(lang[^\}]+)\|lang=[^\|\}]+([^\}]*)\}\}/g, '{{$1$2}}')
					.appendEditSummary('fixing parameters of [[Template:lang]] with the help of [[m:TemplateScript|TemplateScript]]')
					.options({ minor: true });
			}
		},
		{
			name: 'temporary',
			isMinorEdit: true,
//			enabled: false,
			script: function(editor) {
				editor
					.replace(/\[\[adverbial accusative\|Adverbial accusative\]\]/g, '{{adverbial accusative|ar}}')
					.replace(/Adverbial accusative/g, '{{adverbial accusative|ar}}')
					.appendEditSummary('adding [[T:adverbial accusative]], which also categorizes');
			}
		}/*
		{
			name: 'related and derived cleanup',
			category: 'templates',
			script: function(editor) {
				editor
					.replace()
					.replace();
			}
		},*/
	]);
});

syntaxHighlighterConfig = {
    externalLinkColor: "#FFCC66", //orange
    wikilinkColor: "#E6FFFF", //cyan
};

$(function() {
	$("#firstHeading").prop("contenteditable", "true");
	$('#firstHeading').keypress(function (e) {
		var key = e.which;
		if(key == 13) {
			window.location = "https://en.wiktionary.org/w/index.php?search=" + $('#firstHeading').text() + "&title=Special%3ASearch&go=Go";
			return false;
		}
	});
});

// From [[w:MediaWiki:Gadget-edittop.js]], with some modifications

var namespace = mw.config.get( 'wgNamespaceNumber' ) ;

if ($.inArray( mw.config.get('wgAction'), [ 'view', 'purge' ]) !== -1 && ( ( namespace >= 2 && namespace < 6 ) || namespace === 10 || namespace === 100 ) ) {
  $(function edittop_hook () {
    var localtitles = {
      en: 'Edit lead section',
    };

    var our_content = $("#content, #mw_content").first();
    var span1 = our_content.find("span.mw-editsection:not(.plainlinks)").first();
    if (!span1.length) {
      return;
    }
    var span0 = span1.clone().prop('contenteditable', 'false');

    $("#mw_header h1, #content h1").first().append(span0);
    span0.find("a").each(function (idx) {
      var a = $(this);
      a.attr("title", localtitles.en);
      if ( !/&(ve|)section=T/.test( a.attr( "href" ) ) ) { // not transcluded
        a.attr( "href", a.attr( "href" ).replace( /&(ve|)section=\d+/, "&$1section=0&summary=/*%20top%20*/%20" ) );
      } else if ( /&vesection=/.test( a.attr( "href" ) ) ) { // transcluded, VE
        a.attr( "href", mw.util.getUrl( mw.config.get( 'wgPageName' ) ) + "?veaction=edit&vesection=0&summary=/*%20top%20*/%20" );
      } else { // transcluded, not VE
        a.attr( "href", mw.util.getUrl( mw.config.get( 'wgPageName' ) ) + "?action=edit&section=0&summary=/*%20top%20*/%20" );
      }
    });
  });
}


importScript('User:Dixtosa/AjaxEdit.js');
importScript('User:Dixtosa/rhyme.js');
importScript('User:Dixtosa/expandASADRS.js');
importScript('User:Dixtosa/sandbox.js');
importScript('User:Dixtosa/RushToSubsection.js');
// </nowiki>