UNPKG

morsee

Version:

A simple decoder/encoder for morse code written in javascript

120 lines (112 loc) 2.33 kB
const letters = { a: '.-', b: '-...', c: '-.-.', d: '-..', e: '.', f: '..-.', g: '--.', h: '....', i: '..', j: '.---', k: '-.-', l: '.-..', m: '--', n: '-.', o: '---', p: '.--.', q: '--.-', r: '.-.', s: '...', t: '-', u: '..-', v: '...-', w: '.--', x: '-..-', y: '-.--', z: '--..', } const numbers = { 0: '-----', 1: '.----', 2: '..---', 3: '...--', 4: '....-', 5: '.....', 6: '-....', 7: '--...', 8: '---..', 9: '----.', } const nonEnglish = { á: '.--.-', à: '·−−·−', // shared by à, å ä: '·−·−', // shared by ä, æ, ą å: '·−−·−', // shared by à, å ą: '·−·−', // shared by ä, æ, ą æ: '·−·−', // shared by ä, æ, ą ć: '−·−··', // shared by ć, ĉ, ç ĉ: '−·−··', // shared by ć, ĉ, ç ç: '−·−··', // shared by ć, ĉ, ç đ: '··−··', // shared by đ, é, ę ð: '··−−·', é: '··−··', // shared by đ, é, ę è: '·−··−', // shared by è, ł ę: '··−··', // shared by đ, é, ę ĝ: '−−·−·', ĥ: '−−−−', // shared by ĥ, š ĵ: '·−−−·', ł: '·−··−', // shared by è, ł ń: '−−·−−', // shared by ń, ñ ñ: '−−·−−', // shared by ń, ñ ó: '−−−·', // shared by ó, ö, ø ö: '−−−·', // shared by ó, ö, ø ø: '−−−·', // shared by ó, ö, ø ś: '···−···', ŝ: '···−·', š: '−−−−', // shared by ĥ, š þ: '·−−··', ü: '··−−', // shared by ü, ŭ ŭ: '··−−', // shared by ü, ŭ ź: '−−··−·', ż: '−−··−', } const punctuation = { '&': '.-...', "'": '.----.', '@': '.--.-.', $: '···−··−', ')': '-.--.-', '(': '-.--.', ':': '---...', ',': '--..--', ';': '−·−·−·', '=': '-...-', '!': '-.-.--', '.': '.-.-.-', '-': '-....-', _: '··−−·−', '+': '.-.-.', '"': '.-..-.', '?': '..--..', '/': '-..-.', } const extra = { ' ': '/', '\n': '.-.-', } const toMorse = { ...letters, ...numbers, ...nonEnglish, ...punctuation, ...extra, } const fromMorse = Object.keys(toMorse).reduce( (obj, char) => ({ ...obj, [toMorse[char]]: char }), {} ) module.exports = { toMorse, fromMorse, }