morse-code-converter
Version:
Convert text to morse and morse to text
75 lines (71 loc) • 1.94 kB
JavaScript
const morseTable = [
{ char: "A", code: ".-" },
{ char: "B", code: "-..." },
{ char: "C", code: "-.-." },
{ char: "D", code: "-.." },
{ char: "E", code: "." },
{ char: "F", code: "..-." },
{ char: "G", code: "--." },
{ char: "H", code: "...." },
{ char: "I", code: ".." },
{ char: "J", code: ".---" },
{ char: "K", code: "-.-" },
{ char: "L", code: ".-.." },
{ char: "M", code: "--" },
{ char: "N", code: "-." },
{ char: "O", code: "---" },
{ char: "P", code: ".--." },
{ char: "Q", code: "--.-" },
{ char: "R", code: ".-." },
{ char: "S", code: "..." },
{ char: "T", code: "-" },
{ char: "U", code: "..-" },
{ char: "V", code: "...-" },
{ char: "W", code: ".--" },
{ char: "X", code: "-..-" },
{ char: "Y", code: "-.--" },
{ char: "Z", code: "--.." },
{ char: "0", code: "-" },
{ char: "1", code: ".-" },
{ char: "2", code: "..-" },
{ char: "3", code: "...-" },
{ char: "4", code: "....-" },
{ char: "5", code: "....." },
{ char: "6", code: "-...." },
{ char: "7", code: "-..." },
{ char: "8", code: "-.." },
{ char: "9", code: "-." },
{ char: ".", code: ".-.-.-" },
{ char: ",", code: "-..-" },
{ char: "?", code: "..-.." },
{ char: "=", code: "-...-" },
{ char: " ", code: " " }
];
const textToMorse = text =>
text
.split("")
.map(char => {
const entry = morseTable.find(
morse => morse.char.toLowerCase() === char.toLowerCase()
);
return entry ? entry.code : "";
})
.join(" ");
const morseToText = morse => {
const words = morse.split(/\s{2,}/g); // Fill array with words when there's more than 2 spaces
return words
.map(word =>
word
.split(" ")
.map(code => {
const entry = morseTable.find(morse => morse.code === code);
return entry ? entry.char : "";
})
.join("")
)
.join(" ");
};
module.exports = {
textToMorse,
morseToText
};