Pergi ke kandungan

Pengguna:Algazel/rumijawi.js

Daripada Wikipedia, ensiklopedia bebas.

Catatan: Selepas diterbitkan, anda mungkin perlu memintas cache pelayar web untuk melihat perubahan.

  • Firefox / Safari: Tahan Shift sambil klik Reload, atau tekan sama ada Ctrl-F5 atau Ctrl-R (⌘-R pada Mac)
  • Google Chrome: Tekan Ctrl-Shift-R (⌘-Shift-R pada Mac)
  • Edge: Tahan Ctrl sambil tekan Refresh, atau tekan Ctrl-F5.
/* Kod JavaScript ini diambil dari [[Pengguna:Kurniasan/rumikpdjawi.js|rumikpdjawi.js]] yang ditulis 
/* [[Pengguna:Kurniasan|Kurniasan]]
/* Tukar teks daripada rumi kepada jawi */
/* Pengarang: [[Pengguna:Kurniasan]] */

if (typeof(kamus) == "undefined")
    importScript("Pengguna:Algazel/kamusrumikpdjawi.js");

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>' );
    $( "#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);

            function convertToJawi (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 (i in pfxs) {
                        var re2 = new RegExp("\\b(\\w+)(" + pfxs[i] + ")\\b");
                        if (src.match(re2) != null)
                            src = src.replace(re2, prefixProcessor);
                    }
                return src;
            }

            function suffixProcessor(a,b,c) {
                var d = convertToJawi(c);
                if (d == c)
                    return a;
                return imbuhanAwalan[b.toLowerCase()] + d;
            }
            
            function prefixProcessor(a,b,c) {
                var d = convertToJawi(b, true);
                if (d == b)
                    return a;
                return d + imbuhanAkhiran[c];
            }
            
            function c_i_p(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 (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 re = new RegExp('(\\b' + c_i_p(sfxs[i]) + ')(\\w+)\\b', 'g');
                        s = s.replace(re, 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;
        }
    } );
}