-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
75 lines (63 loc) · 2.04 KB
/
script.js
File metadata and controls
75 lines (63 loc) · 2.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
const messageInput = document.getElementById("message");
const resultBox = document.getElementById("result");
const methodSelect = document.querySelector("select.option");
const buttons = document.querySelectorAll(".buttons button");
// Button bindings
buttons[0].addEventListener("click", encode);
buttons[1].addEventListener("click", decode);
buttons[2].addEventListener("click", clear);
function encode() {
const text = messageInput.value;
const method = methodSelect.value;
let encode = "";
switch (method) {
case "reverse":
encode = text.split("").reverse().join("");
break;
case "Caesar":
encode = text.replace(/[a-z]/gi, (char) => {
const shift = 3;
const base = char >= "a" ? 97 : 65;
return String.fromCharCode(((char.charCodeAt(0) - base + shift) % 26) + base);
});
break;
case "symbol":
const map = {
A: "@", E: "3", I: "!", O: "0", S: "$", N: "4", F: "()", L: ">", D: "%",
a: "@", e: "3", i: "!", o: "0", s: "$", n: "4", f: "()", l: ">", d: "%"
};
encode = text.replace(/[aeiosnfldAEIOSNFLD]/g, (c) => map[c] || c);
break;
}
resultBox.textContent = encode;
messageInput.value = "";
}
function decode() {
const encode = messageInput.value;
const method = methodSelect.value;
let decode = "";
switch (method) {
case "reverse":
decode = encode.split("").reverse().join("");
break;
case "Caesar":
decode = encode.replace(/[a-z]/gi, (char) => {
const shift = -3;
const base = char >= "a" ? 97 : 65;
return String.fromCharCode(((char.charCodeAt(0) - base + shift + 26) % 26) + base);
});
break;
case "symbol":
const reverseMap = {
"@": "a", "3": "e", "!": "i", "0": "o", "$": "s", "4": "n", "()": "f", ">": "l", "%": "d"
};
decode = encode.replace(/\(\)|[@3!0$4>%]/g, (c) => reverseMap[c] || c);
break;
}
resultBox.textContent = decode;
messageInput.value = "";
}
function clear() {
messageInput.value = "";
resultBox.textContent = "";
}