Upper Case Conversion

/*
    Explanation :- A user gives a string (it can be incomplete lowercase or
        partially in lowercase) and then the program converts it into a
        completely (all characters in uppercase) uppercase string. The
        logic we have used in the following program is: All the lowercase
        characters (a-z) has [ASCII](https://en.wikipedia.org/wiki/ASCII) value ranging from 97 to 122 and their
        corresponding uppercase characters (A-Z) have ASCII values 32
        lesser than them. For example ‘a‘ has an ASCII value of 97
        and ‘A‘ has an ASCII value of 65 (97 - 32). The same applies to other
        characters.
*/

/**
 * upperCaseConversion takes any case-style string and converts it to the uppercase-style string.
 * @param {string} inputString Any case style string
 * @returns {string} Uppercase string
 */
const upperCaseConversion = (inputString) => {
  // Take a string and split it into characters.
  const newString = inputString.split('').map((char) => {
    // Get a character code by the use charCodeAt method.
    const presentCharCode = char.charCodeAt()
    // If the character code lies between 97 to 122, it means they are in the lowercase so convert it.
    if (presentCharCode >= 97 && presentCharCode <= 122) {
      // Convert the case by use of the above explanation.
      return String.fromCharCode(presentCharCode - 32)
    }
    // Else return the characters without any modification.
    return char
  })
  // After modification, with the help of the join method, join all the characters and return them.
  return newString.join('')
}

export { upperCaseConversion }