bugfix(rot13): Fix negative number rotation

This commit is contained in:
LaraClara 2024-04-05 15:20:19 +10:00
parent 016825d4de
commit 2e1f746957
No known key found for this signature in database
GPG Key ID: E5CAA94190787E02
1 changed files with 14 additions and 7 deletions

View File

@ -62,20 +62,27 @@ class ROT13 extends Operation {
chr;
if (amount) {
if (amount < 0) {
amount = 26 - (Math.abs(amount) % 26);
}
let amountModified;
for (let i = 0; i < input.length; i++) {
amountModified = amount;
chr = input[i];
if (rot13Upperacse && chr >= 65 && chr <= 90) { // Upper case
chr = (chr - 65 + amount) % 26;
if (amountModified < 0) {
amountModified = 26 - (Math.abs(amountModified) % 26);
}
chr = (chr - 65 + amountModified) % 26;
output[i] = chr + 65;
} else if (rot13Lowercase && chr >= 97 && chr <= 122) { // Lower case
chr = (chr - 97 + amount) % 26;
if (amountModified < 0) {
amountModified = 26 - (Math.abs(amountModified) % 26);
}
chr = (chr - 97 + amountModified) % 26;
output[i] = chr + 97;
} else if (rotNumbers && chr >= 48 && chr <= 57) { // Numbers
chr = (chr - 48 + amount) % 10;
if (amountModified < 0) {
amountModified = 10 - ((Math.abs(amountModified)) % 10);
}
chr = (chr - 48 + amountModified) % 10;
output[i] = chr + 48;
}
}