morsa
Version:
Just a simple morse code translator.
50 lines (49 loc) • 1.66 kB
JavaScript
;
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;