// @ts-check /** * Convert Camel Joined Text to Camel Spaced Text * ============================================================================== * @description this function takes a camel cased text without spaces, and returns * a camel-case-spaced text * * @param {string} text - text string without spaces * * @returns {string | null} */ module.exports = function camelJoinedtoCamelSpace(text) { if (!text?.match(/./)) { return ""; } if (text?.match(/ /)) { return text; } if (text) { let textArray = text.split(""); let capIndexes = []; for (let i = 0; i < textArray.length; i++) { const char = textArray[i]; if (i === 0) continue; if (char.match(/[A-Z]/)) { capIndexes.push(i); } } let textChunks = [ `${textArray[0].toUpperCase()}${text.substring(1, capIndexes[0])}`, ]; for (let j = 0; j < capIndexes.length; j++) { const capIndex = capIndexes[j]; if (capIndex === 0) continue; const startIndex = capIndex + 1; const endIndex = capIndexes[j + 1]; textChunks.push( `${textArray[capIndex].toUpperCase()}${text.substring( startIndex, endIndex )}` ); } return textChunks.join(" "); } else { return null; } };