/**
 * Helper function to convert a camel case string to formatted title
 * @param camelString string
 * @param capitalizeAll boolean if true, all words in the title will be capitalized will be uppercase
 * @returns string formatted as title
 */
export function makeTitle(camelString: string, capitalizeAll = false) {
  if (capitalizeAll) {
    return makeTitleAllUpercase(camelString);
  }
  let result = '';

  for (let i = 0; i < camelString.length; i++) {
    const char = camelString.charAt(i);

    if (i === 0) {
      result += char.toUpperCase();
    } else if (char === char.toUpperCase()) {
      result += ' ' + char.toLowerCase();
    } else {
      result += char;
    }
  }

  return result;
}

function makeTitleAllUpercase(camelcaseString: string) {
  let result = '';

  for (let i = 0; i < camelcaseString.length; i++) {
    const char = camelcaseString.charAt(i);

    if (i === 0) {
      result += char.toUpperCase();
    } else if (char === char.toUpperCase()) {
      result += ' ' + char.toUpperCase();
    } else {
      result += char;
    }
  }

  return result;
}
