MediaWiki:Gadget-CodeLinks.js
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'));
});