All files / mutxt-react/src/translit/schemes vi-telex.ts

100% Statements 1/1
100% Branches 0/0
100% Functions 0/0
100% Lines 1/1

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99                    2x                                                                                                                                                                                
import type {TranslitScheme} from '../types';
 
/**
 * Vietnamese Telex input. The classic showcase for digraph-with-extension:
 * type `a` then `a` and the matcher rewrites `a` → `â`; type `a` then `s`
 * and the matcher rewrites `a` → `á`.
 *
 *   Modifier digraphs:  aa→â  ee→ê  oo→ô  aw→ă  ow→ơ  uw→ư  dd→đ
 *   Tones (suffix):     s→sắc  f→huyền  r→hỏi  x→ngã  j→nặng
 */
export const viTelex: TranslitScheme = {
  id: 'vi-telex',
  name: 'Vietnamese (Telex)',
  short: 'VI',
  language: 'vi',
  script: 'Latn',
  kind: 'alphabet',
  rules: [
    // Trigraphs: modified vowel + tone.
    // â family (aa).
    {in: 'aas', out: 'ấ'},
    {in: 'aaf', out: 'ầ'},
    {in: 'aar', out: 'ẩ'},
    {in: 'aax', out: 'ẫ'},
    {in: 'aaj', out: 'ậ'},
    // ê family (ee).
    {in: 'ees', out: 'ế'},
    {in: 'eef', out: 'ề'},
    {in: 'eer', out: 'ể'},
    {in: 'eex', out: 'ễ'},
    {in: 'eej', out: 'ệ'},
    // ô family (oo).
    {in: 'oos', out: 'ố'},
    {in: 'oof', out: 'ồ'},
    {in: 'oor', out: 'ổ'},
    {in: 'oox', out: 'ỗ'},
    {in: 'ooj', out: 'ộ'},
    // ă family (aw).
    {in: 'aws', out: 'ắ'},
    {in: 'awf', out: 'ằ'},
    {in: 'awr', out: 'ẳ'},
    {in: 'awx', out: 'ẵ'},
    {in: 'awj', out: 'ặ'},
    // ơ family (ow).
    {in: 'ows', out: 'ớ'},
    {in: 'owf', out: 'ờ'},
    {in: 'owr', out: 'ở'},
    {in: 'owx', out: 'ỡ'},
    {in: 'owj', out: 'ợ'},
    // ư family (uw).
    {in: 'uws', out: 'ứ'},
    {in: 'uwf', out: 'ừ'},
    {in: 'uwr', out: 'ử'},
    {in: 'uwx', out: 'ữ'},
    {in: 'uwj', out: 'ự'},
 
    // Digraphs: modifier letters.
    {in: 'aa', out: 'â'},
    {in: 'ee', out: 'ê'},
    {in: 'oo', out: 'ô'},
    {in: 'aw', out: 'ă'},
    {in: 'ow', out: 'ơ'},
    {in: 'uw', out: 'ư'},
    {in: 'dd', out: 'đ'},
 
    // Digraphs: bare-vowel + tone.
    {in: 'as', out: 'á'},
    {in: 'af', out: 'à'},
    {in: 'ar', out: 'ả'},
    {in: 'ax', out: 'ã'},
    {in: 'aj', out: 'ạ'},
    {in: 'es', out: 'é'},
    {in: 'ef', out: 'è'},
    {in: 'er', out: 'ẻ'},
    {in: 'ex', out: 'ẽ'},
    {in: 'ej', out: 'ẹ'},
    {in: 'is', out: 'í'},
    {in: 'if', out: 'ì'},
    {in: 'ir', out: 'ỉ'},
    {in: 'ix', out: 'ĩ'},
    {in: 'ij', out: 'ị'},
    {in: 'os', out: 'ó'},
    {in: 'of', out: 'ò'},
    {in: 'or', out: 'ỏ'},
    {in: 'ox', out: 'õ'},
    {in: 'oj', out: 'ọ'},
    {in: 'us', out: 'ú'},
    {in: 'uf', out: 'ù'},
    {in: 'ur', out: 'ủ'},
    {in: 'ux', out: 'ũ'},
    {in: 'uj', out: 'ụ'},
    {in: 'ys', out: 'ý'},
    {in: 'yf', out: 'ỳ'},
    {in: 'yr', out: 'ỷ'},
    {in: 'yx', out: 'ỹ'},
    {in: 'yj', out: 'ỵ'},
  ],
};