UNPKG

morsa

Version:
50 lines (49 loc) 1.66 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const itu_json_1 = __importDefault(require("./data/itu.json")); const flip_object_1 = require("./utils/flip-object"); class Morsa { constructor() { this.ituData = itu_json_1.default; } static normalizeString(textInput) { return textInput .trim() .toLowerCase() .normalize('NFD') .replace(/[\u0300-\u036f]/g, ''); } encode(textInput) { const normalizedString = Morsa.normalizeString(textInput); let encodedText = ''; for (const char of normalizedString) { if (!this.ituData[char]) { encodedText += '# '; continue; } encodedText += `${this.ituData[char]} `; } return encodedText.trim(); } decode(codeInput) { const flippedItuData = (0, flip_object_1.flipObject)(this.ituData); const encodedWords = codeInput.trim().split(' / '); const mapWords = encodedWords.map((word) => { const codes = word.split(' '); let decodedWord = ''; for (const code of codes) { if (!flippedItuData[code]) { decodedWord += '#'; continue; } decodedWord += flippedItuData[code]; } return decodedWord; }); return mapWords.join(' ').toUpperCase(); } } exports.default = Morsa;