Home Reference Source Repository

src/dictionary/arabic.js

export var dictionary = {
    id: 'arabic',

    letter: {
        'ا': '. -',
        'ب': '- . . .',
        'ت': '-',
        'ث': '- . - .',
        'ج': '. - - -',
        'ح': '. . . .',
        'خ': '- - -',
        'د': '- . .',
        'ذ': '- - . .',
        'ر': '. - .',
        'ز': '- - - .',
        'س': '. . .',
        'ش': '- - - -',
        'ص': '- . . -',
        'ض': '. . . -',
        'ط': '. . -',
        'ظ': '- . - -',
        'ع': '. - . -',
        'غ': '- - .',
        'ف': '. . - .',
        'ق': '- - . -',
        'ك': '- . -',
        'ل': '. - . .',
        'م': '- -',
        'ن': '- .',
        'ه': '. . - - . .',
        'و': '. - -',
        'ي': '. .',
        'ﺀ': '.',

        '1': '. - - - -',
        '2': '. . - - -',
        '3': '. . . - -',
        '4': '. . . . -',
        '5': '. . . . .',
        '6': '- . . . .',
        '7': '- - . . .',
        '8': '- - - . .',
        '9': '- - - - .',
        '0': '- - - - -',

        // '.': '. - . - . -',
        // ',': '- - . . - -',
        // ':': '- - - . . .',
        // '?': '. . - - . .',
        // '\'': '. - - - - .',
        // '-': '- . . . . -',
        // '/': '- . . - .',
        // '(': '- . - - .',
        // ')': '- . - - . -',
        // '“': '. - . . - .',  // U+201C
        // '”': '. - . . - .',  // U+201D
        // '‘': '. - . . - .',  // U+2018
        // '’': '. - . . - .',  // U+2019
        // '"': '. - . . - .',
        // '@': '. - - . - .',
        // '=': '- . . . -',
        // '&': '. - . . .',
        // '+': '. - . - .',
        // '!': '- . - . - -',
    },

    letterMatch: /^./,

    /* 'charSpace' and 'wordSpace' are mandatory. The other symbols are dictionary dependent. */
    ratio: {
        '.': 1,
        '-': 3,
        ' ': -1,
        'charSpace': -3,
        'wordSpace': -7
    },

    baseElement: '.',

    frequency: {
        '.': 550,
        '-': 550,
        ' ': 0,
        'charSpace': 0,
        'wordSpace': 0
    },

    display: {
        morse: {
            '\\.': '.',
            '\\-': '-',
            ' ': ''
        },
        join: {
            charSpace: ' ',
            wordSpace: ' / '
        }
    },

    tokeniseMorse: function(morse) {
        morse = morse.trim();
        morse = morse.replace(/_/g, '-')
        morse = morse.replace(/\|/g, '/');
        morse = morse.replace(/\s+/g, ' ');
        morse = morse.replace(/\s*\/[\s\/]*/g, '/');
        let words = morse.split('/');
        let tokens = words.map(word => word.split(' '));
        tokens = tokens.map(letters => letters.map(letter => letter.replace(/(.)(?=.)/g, '$1 ')));
        return tokens;
    },

    morseMatch: new RegExp('^\\s*[\\.\\-_]+[\\.\\-_\\s\\/\\|]*$'),

    displayName: {
        keys: ['.', '-', ' ', 'charSpace', 'wordSpace'],
        values: ['Dit length', 'Dah length', 'Intra-character space', 'Inter-character space', 'Inter-word space']
    },

    options: {
    }
}