CAN SOMEONE TAKE A LOOK AND OFFER SOME HELP AS TO WHY I CAN’T GET
STEP 11 TO FUNCTION. super-encoder,js has functionality for caesar 5, reverse and symbol but not for
ebcode and decode. If in console i input - node super-encoder.js encode or node super-encoder.js decode I receive the error message ‘TRY AGAIN WITH A VALID ENCRYPTION TYPE’ which is the expected function error message, but I don’t undersstand my error, omission? type? Please help.
//super-encoder.js
// Import the encryptors functions here.
const encryptors = require(’./encryptors.js’);
const caesarCipher = encryptors.caesarCipher;
const symbolCipher = encryptors.symbolCipher;
const reverseCipher = encryptors.reverseCipher;
const encodeMessage = (str) => {
// Use the encryptor functions here.
return reverseCipher(symbolCipher(caesarCipher(str, 6)));
}
//console.log(encodedMessage(‘lemon’));
const decodeMessage = (str) => {
// Use the encryptor functions here.
return caesarCipher(symbolCipher(reverseCipher(str)), -6);
}
// User input / output.
const handleInput = (userInput) => {
const str = userInput.toString().trim();
let output;
if (process.argv[2] === ‘encode’) {
output = encodeMessage(str);
}
if (process.argv[2] === ‘decode’) {
output = decodeMessage(str);
}
process.stdout.write(output + ‘\n’);
process.exit();
}
// Run the program.
process.stdout.write('Enter the message you would like to encrypt…\n> ');
process.stdin.on(‘data’, handleInput);
When I run super-encoder.js my output in console is:
$ node message-mixer.js reverse
Enter the message you would like to encrypt…
so this file has functionality for caesar 5, reverse and symbol but not for encode and decode
Here is your encrypted message:
os siht elif sah ytilanoitcnuf
$ node encryptors.js reverse
Enter the message you would like to encrypt…
and this file has functionality
Here is your encrypted message:
dna siht elif sah ytilanoitcnuf
$ node super-encoder.js encode
Try again with a valid encryption type.
$ node super-encoder.js reverse
Enter the message you would like to encrypt…
Enter the message you would like to encrypt…
But this file only has the functionality of message-mixer.js and/or ecryptors.js
Here is your encrypted message:
tuB siht elif ylno sah eht ytilanoitcnuf fo sj.rexim-egassem ro/dna sj.srotpyrce
$ super-encoder.js has access to the functions from message-mixer.js but not to its own functions???
bash: super-encoder.js: command not found
$
//HERE IS THE ENCRYPTORS.JS FILE CONTENT
//AS INSTRUCTED THE 3 FUNCTIONS FROM MESSAGE-MIXER.JS HAVE BEEN TRANSFERRED HERE
const caesarCipher = (str, amount = 0) => {
if (amount < 0) {
return caesarCipher(str, amount + 26);
}
let output = ‘’;
for (let i = 0; i < str.length; i++) {
let char = str[i];
if (char.match(/[a-z]/i)) {
let code = str.charCodeAt(i);
if (code >= 65 && code <= 90) {
char = String.fromCharCode(((code - 65 + amount) % 26) + 65);
} else if (code >= 97 && code <= 122) {
char = String.fromCharCode(((code - 97 + amount) % 26) + 97);
}
}
output += char;
}
return output;
};
const symbolCipher = (str) => {
const symbols = {
‘i’: ‘!’,
‘!’: ‘i’,
‘l’: ‘1’,
‘1’: ‘l’,
‘s’: ‘$’,
‘$’: ‘s’,
‘o’: ‘0’,
‘0’: ‘o’,
‘a’: ‘@’,
‘@’: ‘a’,
‘e’: ‘3’,
‘3’: ‘e’,
‘b’: ‘6’,
‘6’: ‘b’
}
let output = ‘’;
for (let i = 0; i < str.length; i++) {
let char = str.toLowerCase()[i];
if (symbols[char]) {
output += symbols[char]
} else {
output += char;
}
}
return output;
};
const reverseCipher = (sentence) => {
let words = sentence.split(’ ‘);
for (let i = 0; i < words.length; i++) {
words[i] = words[i].split(’’).reverse().join(’’);
}
return words.join(’ ');
};
// User Input / Output Logic
/////////////////////////////////////////////
const encryptionMethod = getEncryptionMethod();
process.stdin.on(‘data’, (userInput) => {
displayEncryptedMessage(encryptionMethod, userInput);
});
/* Helper function for determining which cipher method
the user chose when they ran the program. */
function getEncryptionMethod() {
let encryptionMethod;
const encryptionType = process.argv[2];
if (encryptionType === ‘symbol’) {
encryptionMethod = symbolCipher;
} else if (encryptionType === ‘reverse’) {
encryptionMethod = reverseCipher;
} else if (encryptionType === ‘caesar’) {
let amount = Number(process.argv[3]);
if (Number.isNaN(amount)) {
process.stdout.write(Try again with a valid amount argument. \n
)
process.exit();
}
encryptionMethod = (str) => caesarCipher(str, amount);
}
else {
process.stdout.write(Try again with a valid encryption type. \n
)
process.exit();
}
process.stdout.write('Enter the message you would like to encrypt…\n> ');
return encryptionMethod;
}
/* Helper function for displaying the encrypted message to the user. */
function displayEncryptedMessage(encryptionMethod, userInput) {
let str = userInput.toString().trim();
let output = encryptionMethod(str);
process.stdout.write(\nHere is your encrypted message:\n> ${output}\n
)
process.exit();
}
module.exports.caesarCipher = caesarCipher;
module.exports.symbolCipher = symbolCipher;
module.exports.reverseCipher = reverseCipher;
//HERE IS THE MESSAGE-MIXER.JS FILE AFTER MODIFICATION
// Import the functions from encryptors.js here.
const encryptors = require(’./encryptors.js’);
//option - object destructuring
const { caesarCipher, symbolCipher, reverseCipher } = encryptors;
//option - named function
//onst caesarCipher = encryptors.caesarCipher;
//const symbolCipher = encryptors.symbolCipher;
//const reverseCipher = encryptors.reverseCipher;
// Encryption Functions
/////////////////////////////////////////////
//now moved to encryptors.js and deleted here
// User Input / Output Logic
/////////////////////////////////////////////
/* Helper function for determining which cipher method
the user chose when they ran the program. */
function getEncryptionMethod() {
let encryptionMethod;
const encryptionType = process.argv[2];
if (encryptionType === ‘symbol’) {
encryptionMethod = symbolCipher;
} else if (encryptionType === ‘reverse’) {
encryptionMethod = reverseCipher;
} else if (encryptionType === ‘caesar’) {
let amount = Number(process.argv[3]);
if (Number.isNaN(amount)) {
process.stdout.write(Try again with a valid amount argument. \n
)
process.exit();
}
encryptionMethod = (str) => caesarCipher(str, amount);
}
else {
process.stdout.write(Try again with a valid encryption type. \n
)
process.exit();
}
process.stdout.write('Enter the message you would like to encrypt…\n> ');
return encryptionMethod;
}
/* Helper function for displaying the encrypted message to the user. */
function displayEncryptedMessage(encryptionMethod, userInput) {
let str = userInput.toString().trim();
let output = encryptionMethod(str);
process.stdout.write(\nHere is your encrypted message:\n> ${output}\n
)
process.exit();
}