const errorHandling = require('../../utils/errorHandling'); const { requiredFields } = require('../../config/errors'); /** * @description Inverse la chaîne de caractère * @param {string} string * @returns {string} * @example reverseString('Hello') → 'olleH' */ function reverseString(string) { return string.split("").reverse().join(''); } /** * @description Vérifie si un mot est un palindrome (un mot qui peut s'écrire dans les deux sens) * @requires reverseString * @param {string} string * @param {string} reverseStringResult La chaîne de caractères inversée * @returns {boolean} * @example isPalindrome('kayak') → true */ function isPalindrome(string, reverseStringResult) { return string === reverseStringResult; } /* OUTPUTS */ module.exports = isPalindromeOutput = ({ res, next }, argsObject) => { let { string } = argsObject; // S'il n'y a pas les champs obligatoire if (!(string)) { return errorHandling(next, requiredFields); } if (typeof string !== 'string') { return errorHandling(next, { message: "Vous devez rentré une chaîne de caractère valide.", statusCode: 400 }); } string = string.toLowerCase(); const reverseStringResult = reverseString(string); const isPalindromeResult = isPalindrome(string, reverseStringResult); return res.status(200).json({ isPalindrome: isPalindromeResult, reverseString: reverseStringResult, resultHTML: `

"${string}" ${(isPalindromeResult) ? "est" : "n'est pas"} un palindrome car
"${string}" ${(isPalindromeResult) ? "===" : "!=="} "${reverseStringResult}"

` }); }