MediaWiki:Gadget-CodeLinks.js

Daripada Wiktionary

Catatan: Selepas menyiarkan perubahan, anda mungkin perlu memintas cache pelayar untuk melihatnya.

  • Firefox / Safari: Tahan Shift sambil mengklik Reload, atau tekan sama ada Ctrl-F5 atau Ctrl-R (⌘-R pada Mac)
  • Google Chrome: Tekan Ctrl-Shift-R (⌘-Shift-R pada Mac)
  • Internet Explorer / Edge: Tahan Ctrl sambil mengklik Refresh, atau tekan Ctrl-F5
  • Opera: Tekan Ctrl-F5.
'use strict'; /*jshint undef:true, latedef:true, boss:true */
/*global mw, jQuery */
jQuery(function() {

function findLinks(containers) {
	function processComment(node) {
		var m1, m2, textNode = node.firstChild; // always a text node.
		while (
			(m1 = /\[\[([^|{}\[\]\n]+)?(?:\|.*?)?]]/.exec(textNode.data)) ||
			(m2 = /\{\{(#invoke:)?([^|{}\[\]\n#]+)(?=\||}})/i.exec(textNode.data))
		) {
			var start, stop, link = document.createElement('a');
			if (m1 && (!m2 || (m1.index < m2.index))) {
				link.href = mw.util.getUrl(m1[1]);
				link.appendChild(document.createTextNode(m1[0]));
				start = m1.index;
				stop = m1.index + m1[0].length;
			} else {
				if (m2[1]) {
					link.href = mw.util.getUrl('Modul:' + m2[2]);
					link.appendChild(document.createTextNode(m2[2]));
					start = m2.index + "{{#invoke:".length;
					stop = m2.index + m2[0].length;
				} else {
					link.href = mw.util.getUrl('Templat:' + m2[2]);
					link.appendChild(document.createTextNode(m2[2]));
					start = m2.index + 2;
					stop = m2.index + m2[0].length;
				}
			}

			node.insertBefore(link, textNode);
			node.insertBefore(document.createTextNode(textNode.data.substr(0, start)), link);
			textNode.data = textNode.data.substr(stop);
		}
	}
	for (var j = 0; j < containers.length; j++) {
		var i, co1 = containers[j].getElementsByClassName('co1');
		for (i = 0; i < co1.length; ++i) {
			processComment(co1[i]);
		}
		var comulti = containers[j].getElementsByClassName('coMULTI');
		for (i = 0; i < comulti.length; ++i) {
			processComment(comulti[i]);
		}
	}
}

findLinks(document.getElementsByClassName('source-javascript'));
findLinks(document.getElementsByClassName('source-lua'));
findLinks(document.getElementsByClassName('source-css'));

});