From 7babef6f93be06440bbf88a2375b4e7c34348698 Mon Sep 17 00:00:00 2001 From: bartblaze <3075118+bartblaze@users.noreply.github.com> Date: Mon, 17 Feb 2025 17:35:22 +0100 Subject: [PATCH] Preserve uppercase This will preserve uppercase. --- src/core/operations/ConvertLeetSpeak.mjs | 13 +++++++----- tests/operations/tests/ConvertLeetSpeak.mjs | 22 +++++++++++++++++++++ 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/src/core/operations/ConvertLeetSpeak.mjs b/src/core/operations/ConvertLeetSpeak.mjs index 54fa62f6e7..1a7cb2fcd1 100644 --- a/src/core/operations/ConvertLeetSpeak.mjs +++ b/src/core/operations/ConvertLeetSpeak.mjs @@ -18,7 +18,7 @@ class ConvertLeetSpeak extends Operation { this.name = "Convert Leet Speak"; this.module = "Default"; - this.description = "Converts to and from Leet Speak"; + this.description = "Converts to and from Leet Speak."; this.infoURL = "https://wikipedia.org/wiki/Leet"; this.inputType = "string"; this.outputType = "string"; @@ -39,13 +39,16 @@ class ConvertLeetSpeak extends Operation { */ run(input, args) { const direction = args[0]; + if (direction === "To Leet Speak") { - return input.replace(/[abcdefghijklmnopqrstuvwxyz]/gi, char => { - return toLeetMap[char.toLowerCase()] || char; + return input.replace(/[a-z]/gi, char => { + const leetChar = toLeetMap[char.toLowerCase()] || char; + return char === char.toUpperCase() ? leetChar.toUpperCase() : leetChar; }); } else if (direction === "From Leet Speak") { - return input.replace(/[48cd3f6h1jklmn0pqr57uvwxyz]/g, char => { - return fromLeetMap[char] || char; + return input.replace(/[48cd3f6h1jklmn0pqr57uvwxyz]/gi, char => { + const normalChar = fromLeetMap[char] || char; + return normalChar; }); } } diff --git a/tests/operations/tests/ConvertLeetSpeak.mjs b/tests/operations/tests/ConvertLeetSpeak.mjs index 198f7e57d2..d344580359 100644 --- a/tests/operations/tests/ConvertLeetSpeak.mjs +++ b/tests/operations/tests/ConvertLeetSpeak.mjs @@ -28,6 +28,28 @@ TestRegister.addTests([ args: ["From Leet Speak"] } ] + }, + { + name: "Convert to Leet Speak: basic text, keep case", + input: "HELLO", + expectedOutput: "H3LL0", + recipeConfig: [ + { + op: "Convert Leet Speak", + args: ["To Leet Speak"] + } + ] + }, + { + name: "Convert from Leet Speak: basic leet, keep case", + input: "H3LL0", + expectedOutput: "HeLLo", + recipeConfig: [ + { + op: "Convert Leet Speak", + args: ["From Leet Speak"] + } + ] } ]);