Pengguna:Algazel/rumikpdjawi.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.
// Using Javascript/r_to_j.js

// Skrip asal: Pengguna:Kurniasan/rumikpdjawi.js
// + anotasi skrip

// Import kamus

if (typeof(kamus) === "undefined") {
	importScript('User:' + wgUserName + '/kamusrumikpdjawi.js');
	if (typeof(kamus) === 'undefined')
    	importScript("Pengguna:Algazel/kamusrumikpdjawi.js");
    	importScript("Pengguna:Malaysiaboy/kamusrumikpdjawi.js");
}

/// Kod ini tidak bekerja ///
//importScript("Pengguna:Algazel/kamusrumikpdjawi.js");
//importScript("Pengguna:Malaysiaboy/kamusrumikpdjawi.js");

// Guna 'lint' laman ini
// Guna 'function expression'

// Pasang Checkbox
if (wgNamespaceNumber === 0) {
    var cache = null;
    $( "#p-namespaces ul" ).append( '<li id="ca-nstab-rkj"><span>' + 
                                    '<a><input id="togol-rkj" type="checkbox"></a>' +
                                    '<a><label for="togol-rkj">Papar dalam Jawi</label></a>' +
                                    '</span></li>' );
// Kelakuan Checkbox 

$( "#togol-rkj" ).click( function() {
        if ($( this ).attr( "checked" ) === 'checked') {
            if (cache === null) {
                cache = $( "#mw-content-text").html();
            }
            var k = Object.keys(kamus);
            var sfxs = Object.keys(imbuhanAwalan);
            var pfxs = Object.keys(imbuhanAkhiran);
 
            var convertToJawi = function(src, no_recursive) {
                var re1 = new RegExp("\\b" + src + "\\b");
                if (kamus[src] !== null) {
                    src = src.replace(re1, kamus[src]);
                }
                else if (no_recursive !== true) {
                    for (var i in pfxs) {
                        var re2 = new RegExp("\\b(\\w+)(" + pfxs[i] + ")\\b");
                        if (src.match(re2) !== null) {
                            src = src.replace(re2, prefixProcessor);
                    }
                    }
                }
                return src;
            }; // end convert to jawi
 
            var suffixProcessor= function(a,b,c) {
                var d = convertToJawi(c);
                if (d === c) {
                    return a;
                }
                return imbuhanAwalan[b.toLowerCase()] + d;
            };
 
            var prefixProcessor = function(a,b,c) {
                var d = convertToJawi(b, true);
                if (d === b) {
                    return a;
                }
                return d + imbuhanAkhiran[c];
            };
 
            var c_i_p= function(w) {
                /* Return case insensitive pattern */
                return '[' + w[0].toUpperCase() + w[0] + ']' + w.slice(1);
            };
 
            $( "#mw-content-text" ).contents().map( function recursive() {
                var cs = $( this ).contents();
                if (cs.length > 0) {
                    cs.map( recursive);
                }
                else {
                    var s = this.textContent;
                    for (var i in k) {
                        var re = new RegExp('\\b' + c_i_p(k[i]) + '\\b', 'g');
                        s = s.replace(re, kamus[k[i]]);
                    }
                    for (i in sfxs) {
                        var reSfxs = new RegExp('(\\b' + c_i_p(sfxs[i]) + ')(\\w+)\\b', 'g');
                        s = s.replace(reSfxs, suffixProcessor);
                    }
                    this.textContent = s;
                }
            } );
            $( "#mw-content-text" ).attr('dir', 'rtl').attr('class', 'mw-content-rtl');
        }
        else if (cache !== null) {
            $( "#mw-content-text" ).attr('dir', 'ltr').attr('class', 'mw-content-ltr').html(cache);
            cache = null;
        }
    } ); // end togol
}