UNPKG

@ozdemirburak/morse-code-translator

Version:

Morse code translator helps you convert text to Morse code and vice versa, with the option to play Morse code audio.

59 lines (51 loc) 1.88 kB
import { getCharacters, getMappedCharacters, swapCharacters } from './characters'; import getOptions from './options'; import getAudio from './audio'; declare let exports; declare let module; declare let define; ;(((name, root, factory) => { if (typeof exports === 'object') { module.exports = factory(); } else if (typeof define === 'function' && define.amd) { define(factory); } else if (root !== undefined) { root[name] = factory(); } })('morse-code-translator', globalThis, () => { 'use strict'; const encode = (text: string, opts: Options) => { const options = getOptions(opts); const characters = getCharacters(options); return [...text.replace(/\s+/g, options.separator).trim().toLocaleUpperCase()].map(function (character) { for (const set in characters) { if (typeof characters[set] !== 'undefined' && typeof characters[set][character] !== 'undefined') { return characters[set][character]; } } return options.invalid; }).join(options.separator).replace(/0/g, options.dot).replace(/1/g, options.dash); }; const decode = (morse: string, opts: Options) => { const options = getOptions(opts); const swapped = swapCharacters(options); return morse.replace(/\s+/g, options.separator).trim().split(options.separator).map(function (characters) { if (typeof swapped[characters] !== 'undefined') { return swapped[characters]; } return options.invalid; }).join(''); }; const characters = (options, usePriority) => getMappedCharacters(getOptions(options), usePriority); const audio = (text: string, opts: Options, morseString: string) => { const morse = morseString || encode(text, opts); const options = getOptions(opts); return getAudio(morse, options); } return { characters, decode, encode, audio }; }));