From 0a87eded3ec9e248514554499fc1dd2353ab5282 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D1=83=D0=BA=D0=B0?= <164436043+diamond-ore@users.noreply.github.com> Date: Sat, 27 Apr 2024 16:32:19 -0400 Subject: [PATCH] Morse code --- techdemos/encode/js/encoders/morse.js | 31 +++++++++++++++++++++++++++ techdemos/encode/js/encoders/url.js | 3 +-- techdemos/encode/js/main.js | 5 +++++ 3 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 techdemos/encode/js/encoders/morse.js diff --git a/techdemos/encode/js/encoders/morse.js b/techdemos/encode/js/encoders/morse.js new file mode 100644 index 0000000..e9206bf --- /dev/null +++ b/techdemos/encode/js/encoders/morse.js @@ -0,0 +1,31 @@ +var morse = {".": ".-.-.-", ",": "--..--", "?": "..--..", "'": ".----.", "/": "-..-.", "(": "-.--.", ")": "-.--.-", "&": ".-...", ":": "---...", ";": "-.-.-.", "=": "-...-", "+": ".-.-.", "-": "-....-", "_": "..--.-", "\"": ".-..-.", "$": "...-..-", "!": "-.-.--", "@": ".--.-.", " ": "/", "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": "--..", "1": ".----", "2": "..---", "3": "...--", "4": "....-", "5": ".....", "6": "-....", "7": "--...", "8": "---..", "9": "----.", "0": "-----"}; + +function encodeMorse(text) { + text = text.toLowerCase(); + + for (const [key, value] of Object.entries(morse)) { + text = text.replaceAll(key, value + " "); + } + + text = text.substring(0, text.length - 1); + + return text; +} + +function decodeMorse(code) { + var text = "" + + for (const sequence of code.split(" ")) { + for (const [key, value] of Object.entries(morse)) { + console.log(value) + console.log(sequence) + if (sequence == value) { + text += key; + } + } + } + + return text; +} + +export {encodeMorse, decodeMorse} \ No newline at end of file diff --git a/techdemos/encode/js/encoders/url.js b/techdemos/encode/js/encoders/url.js index 372a197..9e13966 100644 --- a/techdemos/encode/js/encoders/url.js +++ b/techdemos/encode/js/encoders/url.js @@ -2,8 +2,7 @@ function encodeURIAggressive(text) { var encoded_text = ""; const characters = encodeURI(text).split(/(%\w\w)/g).filter(t => t !== ""); - for (const i in characters) { - let c = characters[i] + for (const c of characters) { if (c.startsWith("%")) { encoded_text += c; } diff --git a/techdemos/encode/js/main.js b/techdemos/encode/js/main.js index ddd5cde..2df5cb2 100644 --- a/techdemos/encode/js/main.js +++ b/techdemos/encode/js/main.js @@ -1,4 +1,5 @@ import {encodeURIAggressive, encodeURINonDestructive, decodeURINonDestructive} from "./encoders/url.js"; +import {encodeMorse, decodeMorse} from "./encoders/morse.js"; const mode = document.getElementById("mode"); const encode = document.getElementById("encode"); @@ -24,6 +25,10 @@ const codes = { encode: text => text.split("").map(c => c.charCodeAt(0).toString(2).padStart(8, "0")).join(" "), decode: text => text.split(" ").filter(p => !!p).map(c => String.fromCharCode(parseInt(c, 2))).join("") }, + "Morse": { + encode: encodeMorse, + decode: decodeMorse + }, "URL": { encode: encodeURI, decode: decodeURI