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 = ({ 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}"

` }) }