wikimedia/mediawiki-extensions-UniversalLanguageSelector

View on GitHub
lib/jquery.ime/rules/vai/vai-transliteration.js

Summary

Maintainability
A
3 hrs
Test Coverage
( function ( $ ) {
    'use strict';

    var vaiTransliteration = {
        id: 'vai-transliteration',
        name: 'Vai Transliteration',
        description: 'Vai Transliteration, based on the SIL Keyman layout found at https://github.com/keymanapp/keyboards/tree/master/release/sil/sil_vai/source, with extensions',
        date: '2019-05-08',
        URL: 'https://github.com/wikimedia/jquery.ime',
        author: 'Amir E. Aharoni',
        license: 'GPLv3',
        version: '1.0',
        contextLength: 3,
        maxKeyLength: 4,
        patterns: [
            // N.B.: Each series doesn't go exactly according to the sequential
            // Unicode order because this way 'he' would override 'bhe', etc.

            // Punctuation, additional letters, and logograms
            [ '[XN]', '\uA60B' ], // X, N ꘋ - syllable-final ng
            [ '\uA60C=', '=' ], // An equals sign
            [ '=', '\uA60C' ], // Syllable lengthener ꘌ
            [ '\uA60D,', ',' ], // Latin comma
            [ ',', '\uA60D' ], // Vai comma
            [ '\uA60E\\.', '.' ], // Latin full stop
            [ '\\.', '\uA60E' ], // Vai full stop
            [ '\uA60E\uA60E!', '!' ], // Latin exclamation mark
            [ '!', '\uA60E\uA60E' ], // Exclamation mark (double Vai full stop)
            [ '\uA60F\\?', '?' ], // Latin question mark
            [ '\\?', '\uA60F' ], // Vai question mark
            [ 'F\uA5E1\uA60BG', 'FEN', '\uA613' ], // Feeng logogram ꘓ
            [ 'FAH?A', '\uA618' ], // Faa logogram ꘘ

            // Syllables in -ee (e)
            [ 'we', '\uA503' ], // we ꔃ
            [ '\uA503~', '\uA504' ], // we~ ꔄ
            [ 'bhe', '\uA506' ], // bhe ꔆ
            [ 'mbe', '\uA508' ], // mbe ꔈ
            [ 'kpe', '\uA509' ], // kpe ꔉ
            [ 'mgbe', '\uA50A' ], // mgbe ꔊ
            [ 'gbe', '\uA50B' ], // gbe ꔋ
            [ 'fe', '\uA50C' ], // fe ꔌ
            [ 've', '\uA50D' ], // ve ꔍ
            [ 'te', '\uA50E' ], // te ꔎ
            [ 'the', '\uA50F' ], // the ꔏ
            [ 'dhe', '\uA511' ], // dhe ꔑ
            [ 're', '\uA513' ], // re ꔓ
            [ 'n[dD]e', '\uA515' ], // nde, nDe ꔕ
            [ '(dl|D)e', '\uA514' ], // dle, De ꔔ
            [ 'se', '\uA516' ], // se ꔖ
            [ 'she', '\uA517' ], // she ꔗ
            [ 'ze', '\uA518' ], // ze ꔘ
            [ 'zhe', '\uA519' ], // zhe ꔙ
            [ 'ce', '\uA51A' ], // ce ꔚ
            [ 'nje', '\uA51C' ], // nje ꔜ
            [ 'ke', '\uA51E' ], // ke ꔞ
            [ 'nge', '\uA51F' ], // nge ꔟ
            [ 'me', '\uA521' ], // me ꔡ
            [ 'ne', '\uA522' ], // ne ꔢ
            [ 'nye', '\uA523' ], // nye ꔣ
            [ 'he', '\uA502' ], // he ꔂ
            [ 'pe', '\uA505' ], // pe ꔅ
            [ 'be', '\uA507' ], // be ꔇ
            [ 'de', '\uA510' ], // de ꔐ
            [ 'le', '\uA512' ], // le ꔒ
            [ 'je', '\uA51B' ], // je ꔛ
            [ 'ye', '\uA51D' ], // ye ꔝ
            [ 'ge', '\uA520' ], // ge ꔠ

            // Syllables in -i
            [ 'wi', '\uA528' ], // wi ꔨ
            [ '\uA528~', '\uA529' ], // wi~ ꔩ
            [ 'bhi', '\uA52B' ], // bhi ꔫ
            [ '\uA526~', '\uA527' ], // hi~ ꔩ
            [ 'mbi', '\uA52D' ], // mbi ꔭ
            [ 'kpi', '\uA52E' ], // kpi ꔮ
            [ 'mgbi', '\uA52F' ], // mgbi ꔯ
            [ 'gbi', '\uA530' ], // gbi ꔰ
            [ 'fi', '\uA531' ], // fi ꔱ
            [ 'vi', '\uA532' ], // vi ꔲ
            [ 'ti', '\uA533' ], // ti ꔳ
            [ 'thi', '\uA534' ], // thi ꔳ
            [ 'dhi', '\uA536' ], // dhi ꔶ
            [ 'ri', '\uA538' ], // ri ꔸ
            [ 'n[dD]i', '\uA53A' ], // ndi, nDi ꔺ
            [ '(dl|D)i', '\uA539' ], // dli, Di ꔹ
            [ 'si', '\uA53B' ], // si ꔻ
            [ 'shi', '\uA53C' ], // shi ꔼ
            [ 'zi', '\uA53D' ], // zi ꔽ
            [ 'zhi', '\uA53E' ], // zhi ꔾ
            [ 'ci', '\uA53F' ], // ci ꔿ
            [ 'nji', '\uA541' ], // nji ꕁ
            [ 'ki', '\uA543' ], // ki ꕃ
            [ 'ngi', '\uA544' ], // ngi ꕄ
            [ 'mi', '\uA546' ], // mi ꕆ
            [ 'ni', '\uA547' ], // ni ꕇ
            [ 'nyi', '\uA548' ], // nyi ꕈ
            [ 'hi', '\uA526' ], // hi ꔦ
            [ 'pi', '\uA52A' ], // pi ꔪ
            [ 'bi', '\uA52C' ], // bi ꔬ
            [ 'di', '\uA535' ], // di ꔵ
            [ 'li', '\uA537' ], // li ꔷ
            [ 'ji', '\uA540' ], // ji ꕀ
            [ 'yi', '\uA542' ], // yi ꕂ
            [ 'gi', '\uA545' ], // gi ꕅ

            // Syllables in -a
            [ '\uA56C~', '\uA54B' ], // nga~ ꕋ
            [ 'wa', '\uA54E' ], // wi ꕎ
            [ '\uA54E~', '\uA54F' ], // wa~ ꕏ
            [ 'bha', '\uA551' ], // bha ꕑ
            [ '\uA54C~', '\uA54D' ], // ha~ ꕍ
            [ 'mba', '\uA553' ], // mba ꕓ
            [ 'kpa', '\uA554' ], // kpa ꕔ
            [ '\uA554~', '\uA555' ], // kpa ꕕ
            [ 'mgba', '\uA556' ], // mgba ꕖ
            [ 'gba', '\uA557' ], // gba ꕗ
            [ 'fa', '\uA558' ], // fa ꕘ
            [ 'va', '\uA559' ], // va ꕙ
            [ 'ta', '\uA55A' ], // ta ꕚ
            [ 'tha', '\uA55B' ], // tha ꕛ
            [ 'dha', '\uA55D' ], // dha ꕝ
            [ 'ra', '\uA55F' ], // ra ꕟ
            [ 'n[dD]a', '\uA561' ], // nda, nDa ꕡ
            [ '(dl|D)a', '\uA560' ], // dla, Da ꕠ
            [ 'sa', '\uA562' ], // sa ꕢ
            [ 'sha', '\uA563' ], // sha ꕣ
            [ 'za', '\uA564' ], // za ꕤ
            [ 'zha', '\uA565' ], // zha ꕥ
            [ 'ca', '\uA566' ], // ca ꕦ
            [ 'nja', '\uA568' ], // nja ꕨ
            [ 'ka', '\uA56A' ], // ka ꕪ
            [ '\uA56A~', '\uA56B' ], // ka~ ꕫ
            [ 'nga', '\uA56C' ], // nga ꕬ
            [ 'ma', '\uA56E' ], // ma ꕮ
            [ 'na', '\uA56F' ], // na ꕯ
            [ 'nya', '\uA570' ], // nya ꕰ
            [ 'ha', '\uA54C' ], // ha ꕌ
            [ 'pa', '\uA550' ], // pa ꕐ
            [ 'ba', '\uA552' ], // ba ꕒ
            [ 'da', '\uA55C' ], // da ꕜ
            [ 'la', '\uA55E' ], // la ꕞ
            [ 'ja', '\uA567' ], // ja ꕧ
            [ 'ya', '\uA569' ], // ya ꕩ
            [ 'ga', '\uA56D' ], // ga ꕭ

            // Syllables in -oo (o)
            [ 'wo', '\uA574' ], // wo ꕴ
            [ '\uA574~', '\uA575' ], // wo~ ꕵ
            [ 'bho', '\uA577' ], // bho ꕷ
            [ 'mbo', '\uA579' ], // mbo ꕹ
            [ 'kpo', '\uA57A' ], // kpo ꕺ
            [ 'mgbo', '\uA57B' ], // mgbo ꕻ
            [ 'gbo', '\uA57C' ], // gbo ꕼ
            [ 'fo', '\uA57D' ], // fo ꕽ
            [ 'vo', '\uA57E' ], // vo ꕾ
            [ 'to', '\uA57F' ], // to ꕿ
            [ 'tho', '\uA580' ], // tho ꖀ
            [ 'dho', '\uA582' ], // dho ꖂ
            [ 'ro', '\uA584' ], // ro ꖄ
            [ 'n[dD]o', '\uA586' ], // ndo, nDo ꖆ
            [ '(dl|D)o', '\uA585' ], // dlo, Do ꖅ
            [ 'so', '\uA587' ], // so ꖇ
            [ 'sho', '\uA588' ], // sho ꖈ
            [ 'zo', '\uA589' ], // zo ꖉ
            [ 'zho', '\uA58A' ], // zho ꖊ
            [ 'co', '\uA58B' ], // co ꖋ
            [ 'njo', '\uA58D' ], // njo ꖍ
            [ 'ko', '\uA58F' ], // ko ꖏ
            [ 'ngo', '\uA590' ], // ngo ꖐ
            [ 'mo', '\uA592' ], // mo ꖒ
            [ 'no', '\uA593' ], // no ꖓ
            [ 'nyo', '\uA594' ], // nyo ꖔ
            [ 'ho', '\uA573' ], // ho ꕳ
            [ 'po', '\uA576' ], // po ꕶ
            [ 'bo', '\uA578' ], // bo ꕸ
            [ 'do', '\uA581' ], // do ꖁ
            [ 'lo', '\uA583' ], // lo ꖃ
            [ 'jo', '\uA58C' ], // jo ꖌ
            [ 'yo', '\uA58E' ], // yo ꖎ
            [ 'go', '\uA591' ], // go ꖑ

            // Syllables in -u
            [ 'wu', '\uA599' ], // wu ꖕ
            [ '\uA599~', '\uA59A' ], // wu~ ꖖ
            [ 'bhu', '\uA59C' ], // bhu ꖜ
            [ '\uA597~', '\uA598' ], // hu~ ꖘ
            [ 'mbu', '\uA59E' ], // mbu ꖞ
            [ 'kpu', '\uA59F' ], // kpu ꖟ
            [ 'mgbu', '\uA5A0' ], // mgbu ꖠ
            [ 'gbu', '\uA5A1' ], // gbu ꖡ
            [ 'fu', '\uA5A2' ], // fu ꖢ
            [ 'vu', '\uA5A3' ], // vu ꖣ
            [ 'tu', '\uA5A4' ], // tu ꖤ
            [ 'thu', '\uA5A5' ], // thu ꖥ
            [ 'dhu', '\uA5A7' ], // dhu ꖧ
            [ 'ru', '\uA5A9' ], // ru ꖩ
            [ 'n[dD]u', '\uA5AB' ], // ndu, nDu ꖫ
            [ '(dl|D)u', '\uA5AA' ], // dlu, Du ꖪ
            [ 'su', '\uA5AC' ], // su ꖬ
            [ 'shu', '\uA5AD' ], // shu ꖭ
            [ 'zu', '\uA5AE' ], // zu ꖮ
            [ 'zhu', '\uA5AF' ], // zhu ꖯ
            [ 'cu', '\uA5B0' ], // cu ꖰ
            [ 'nju', '\uA5B2' ], // nju ꖲ
            [ 'ku', '\uA5B4' ], // ku ꖴ
            [ 'ngu', '\uA5B5' ], // ngu ꖵ
            [ 'mu', '\uA5B7' ], // mu ꖷ
            [ 'nu', '\uA5B8' ], // nu ꖸ
            [ 'nyu', '\uA5B9' ], // nyu ꖹ
            [ 'hu', '\uA597' ], // hu ꖗ
            [ 'pu', '\uA59B' ], // pu ꖛ
            [ 'bu', '\uA59D' ], // bu ꖝ
            [ 'du', '\uA5A6' ], // du ꖦ
            [ 'lu', '\uA5A8' ], // lu ꖨ
            [ 'ju', '\uA5B1' ], // ju ꖱ
            [ 'yu', '\uA5B3' ], // yu ꖳ
            [ 'gu', '\uA5B6' ], // gu ꖶ

            // Syllables in -o (ɔ)
            [ '\uA5DC~', '\uA5BC' ], // ngx~, ngO~ ꖼ
            [ 'w[xO]', '\uA5BF' ], // wx, wO ꖿ
            [ '\uA5BF~', '\uA5C0' ], // wx~, wO~ ꗀ
            [ 'bh[xO]', '\uA5C2' ], // bhx, bhO ꗂ
            [ '\uA5BD~', '\uA5BE' ], // hx~, hO~ ꖾ
            [ 'mb[xO]', '\uA5C4' ], // mbx, mbO ꗄ
            [ 'kp[xO]', '\uA5C5' ], // kpx, kpO ꗅ
            [ 'mgb[xO]', '\uA5C6' ], // mgbx, mgbO ꗆ
            [ 'gb[xO]', '\uA5C7' ], // gbx, gbO ꗇ
            [ '\uA5C7~', '\uA5C8' ], // gbx~, gbO~ ꗈ
            [ 'f[xO]', '\uA5C9' ], // fx, fO ꗉ
            [ 'v[xO]', '\uA5CA' ], // vx, vO ꗊ
            [ 't[xO]', '\uA5CB' ], // tx, tO ꗋ
            [ 'th[xO]', '\uA5CC' ], // thx, thO ꗌ
            [ 'dh[xO]', '\uA5CE' ], // dhx, dhO ꗎ
            [ 'r[xO]', '\uA5D0' ], // rx, rO ꗐ
            [ 'n[dD][xO]', '\uA5D2' ], // ndx, nDx, ndO nDO ꗒ
            [ '(dl|D)[xO]', '\uA5D1' ], // dlx, Dx, dlO, DO ꗑ
            [ 's[xO]', '\uA5D3' ], // sx, sO ꗓ
            [ 'sh[xO]', '\uA5D4' ], // shx, shO ꗔ
            [ 'z[xO]', '\uA5D5' ], // zx, zO ꗕ
            [ 'zh[xO]', '\uA5D6' ], // zhx, zhO ꗖ
            [ 'c[xO]', '\uA5D7' ], // cx, cO ꗗ
            [ 'nj[xO]', '\uA5D9' ], // njx, njO ꗙ
            [ 'k[xO]', '\uA5DB' ], // kx, kO ꗛ
            [ 'ng[xO]', '\uA5DC' ], // ngx, ngO ꖼ
            [ 'm[xO]', '\uA5DE' ], // mx, mO ꗞ
            [ 'n[xO]', '\uA5DF' ], // nx, nO ꗟ
            [ 'ny[xO]', '\uA5E0' ], // nyx, nyO ꗠ
            [ 'h[xO]', '\uA5BD' ], // hx, hO ꖽ
            [ 'p[xO]', '\uA5C1' ], // px, pO ꗁ
            [ 'b[xO]', '\uA5C3' ], // bx, bO ꗃ
            [ 'd[xO]', '\uA5CD' ], // dx, dO ꗍ
            [ 'l[xO]', '\uA5CF' ], // lx, lO ꗏ
            [ 'j[xO]', '\uA5D8' ], // jx, jO ꗘ
            [ 'y[xO]', '\uA5DA' ], // yx, yO ꗚ
            [ 'g[xO]', '\uA5DD' ], // gx, gO ꗝ

            // Syllables in -e (ɛ)
            [ '\uA604~', 'ng[qE]', '\uA5E3' ], // ngq~, ngE~ ꗣ
            [ 'w[qE]', '\uA5E6' ], // wq, wE ꗦ
            [ '\uA5E6~', '\uA5E7' ], // wq~, wE~ ꗧ
            [ 'bh[qE]', '\uA5E9' ], // bhq, bhE ꗩ
            [ '\uA5E4~', '\uA5E5' ], // hq~, hE~ ꗥ
            [ 'mb[qE]', '\uA5EB' ], // mbq, mbE ꗫ
            [ 'kp[qE]', '\uA5EC' ], // kpq, kpE ꗬ
            [ '\uA5EC~', '\uA5ED' ], // kpq~, kpE~ ꗭ
            [ 'mgb[qE]', '\uA5EE' ], // mgbq, mgbE ꗮ
            [ 'gb[qE]', '\uA5EF' ], // gbq, gbE ꗯ
            [ '\uA5EF~', '\uA5F0' ], // gbq~, gbE~ ꗰ
            [ 'f[qE]', '\uA5F1' ], // fq, fE ꗱ
            [ 'v[qE]', '\uA5F2' ], // vq, vE ꗲ
            [ 't[qE]', '\uA5F3' ], // tq, tE ꗳ
            [ 'th[qE]', '\uA5F4' ], // thq, thE ꗴ
            [ 'dh[qE]', '\uA5F6' ], // dhq, dhE ꗶ
            [ 'r[qE]', '\uA5F8' ], // rq, rE ꗸ
            [ 'n[dD][qE]', '\uA5FA' ], // ndq, nDq, ndE, nDE ꗺ
            [ '(dl|D)[qE]', '\uA5F9' ], // dlq, Dq, dlE, DE ꗹ
            [ 's[qE]', '\uA5FB' ], // sq, sE ꗻ
            [ 'sh[qE]', '\uA5FC' ], // shq, shE ꗼ
            [ 'z[qE]', '\uA5FD' ], // zq, zE ꗽ
            [ 'zh[qE]', '\uA5FE' ], // zhq, zhE ꗾ
            [ 'c[qE]', '\uA5FF' ], // cq, cE ꗿ
            [ 'nj[qE]', '\uA601' ], // njq, njE ꘁ
            [ 'k[qE]', '\uA603' ], // kq, kE ꘃ
            [ 'ngg?[qE]', '\uA604' ], // ngq, ngE ꘄ
            [ '\uA604~', 'gg[qE]', '\uA605' ], // nggq~, nggE~ ꘅ
            [ '\uA606~', '\uA607' ], // gq~, gE~ ꘇ
            [ 'm[qE]', '\uA608' ], // mq, mE ꘈ
            [ 'n[qE]', '\uA609' ], // nq, nE ꘉ
            [ 'ny[qE]', '\uA60A' ], // nyq, nyE ꘊ
            [ 'h[qE]', '\uA5E4' ], // hq, hE ꗥ
            [ 'p[qE]', '\uA5E8' ], // pq, pE ꗨ
            [ 'b[qE]', '\uA5EA' ], // bq, bE ꗪ
            [ 'd[qE]', '\uA5F5' ], // dq, dE ꗵ
            [ 'l[qE]', '\uA5F7' ], // lq, lE ꗷ
            [ 'j[qE]', '\uA600' ], // jq, jE ꘀ
            [ 'y[qE]', '\uA602' ], // yq, yE ꘂ
            [ 'g[qE]', '\uA606' ], // gq, gE ꘆ

            // Vowels
            [ 'e', '\uA500' ], // e ꔀ (Unicode -ee)
            [ 'i', '\uA524' ], // i ꔤ
            [ 'a', '\uA549' ], // a ꕉ
            [ 'o', '\uA571' ], // o ꕱ (Unicode -oo)
            [ 'u', '\uA595' ], // u ꖕ
            [ '[xO]', '\uA5BA' ], // x, O ꖺ (ɔ, Unicode -o)
            [ '[qE]', '\uA5E1' ], // q, E ꗡ (ɛ, Unicode -e)

            // Nasal vowels
            [ '\uA500~', '\uA501' ], // e~ ꔁ
            [ '\uA524~', '\uA525' ], // i~ ꔥ
            [ '\uA549~', '\uA54A' ], // a~ ꕊ
            [ '\uA571~', '\uA572' ], // o~ ꕲ
            [ '\uA595~', '\uA596' ], // u~ ꖖ
            [ '\uA5BA~', '\uA5BB' ], // x~, O~ ꖻ
            [ '\uA5E1~', '\uA5E2' ] // q~, E~ ꗢ
        ]
    };

    $.ime.register( vaiTransliteration );
}( jQuery ) );