UNPKG

@terminus/ngx-tools

Version:

[![CircleCI][circle-badge]][circle-link] [![codecov][codecov-badge]][codecov-project] [![semantic-release][semantic-release-badge]][semantic-release] [![MIT License][license-image]][license-url] <br> [![NPM version][npm-version-image]][npm-url] [![Github

83 lines 9.28 kB
/* * 'Inspired' by https://github.com/sindresorhus/camelcase */ /** * Function that preserves camel case * * @param input - The string input * @returns The adjusted string */ function preserveCamelCase(input) { var isLastCharLower = false; var isLastCharUpper = false; var isLastLastCharUpper = false; for (var i = 0; i < input.length; i++) { var c = input[i]; if (isLastCharLower && /[a-zA-Z]/.test(c) && c.toUpperCase() === c) { input = input.slice(0, i) + "-" + input.slice(i); isLastCharLower = false; isLastLastCharUpper = isLastCharUpper; isLastCharUpper = true; i++; } else if (isLastCharUpper && isLastLastCharUpper && /[a-zA-Z]/.test(c) && c.toLowerCase() === c) { input = input.slice(0, i - 1) + "-" + input.slice(i - 1); isLastLastCharUpper = isLastCharUpper; isLastCharUpper = false; isLastCharLower = true; } else { isLastCharLower = c.toLowerCase() === c; isLastLastCharUpper = isLastCharUpper; isLastCharUpper = c.toUpperCase() === c; } } return input; } /** * Post process a conversion into PascalCase if necessary * * @param x - The string * @param pascalCase - A boolean representing if the string should be converted to PascalCase * @returns The final string */ var postProcess = function (x, pascalCase) { return (pascalCase ? x.charAt(0).toUpperCase() + x.slice(1) : x); }; var ɵ0 = postProcess; /** * Convert a string to camelCase * * @param input - The string to convert * @param pascalCase - A boolean representing if the string should be converted to PascalCase * @returns The camelCase version of the string * * @example * toCamelCase('MY_TEXT') // Returns: `myText` * toCamelCase('MY_TEXT', true) // Returns: `MyText` */ export function toCamelCase(input, pascalCase) { if (pascalCase === void 0) { pascalCase = false; } if (!input) { return undefined; } // Trim whitespace input = input.trim(); // Test for a single character if (input.length === 1) { return pascalCase ? input.toUpperCase() : input.toLowerCase(); } // Test if we are dealing with a single lowercased word if (/^[a-z\d]+$/.test(input)) { return postProcess(input, pascalCase); } // Test if there are any uppercase if (input !== input.toLowerCase()) { input = preserveCamelCase(input); } input = input .replace(/^[_.\- ]+/, '') .toLowerCase() .replace(/[_.\- ]+(\w|$)/g, function (m, p1) { return p1.toUpperCase(); }); return postProcess(input, pascalCase); } export { ɵ0 }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG8tY2FtZWwtY2FzZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0ZXJtaW51cy9uZ3gtdG9vbHMvdXRpbGl0aWVzLyIsInNvdXJjZXMiOlsidG8tY2FtZWwtY2FzZS90by1jYW1lbC1jYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBR0g7Ozs7O0dBS0c7QUFDSCxTQUFTLGlCQUFpQixDQUFDLEtBQWE7SUFDdEMsSUFBSSxlQUFlLEdBQUcsS0FBSyxDQUFDO0lBQzVCLElBQUksZUFBZSxHQUFHLEtBQUssQ0FBQztJQUM1QixJQUFJLG1CQUFtQixHQUFHLEtBQUssQ0FBQztJQUVoQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNyQyxJQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbkIsSUFBSSxlQUFlLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBQ2xFLEtBQUssR0FBTSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBSSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBRyxDQUFDO1lBQ2pELGVBQWUsR0FBRyxLQUFLLENBQUM7WUFDeEIsbUJBQW1CLEdBQUcsZUFBZSxDQUFDO1lBQ3RDLGVBQWUsR0FBRyxJQUFJLENBQUM7WUFDdkIsQ0FBQyxFQUFFLENBQUM7U0FDTDthQUFNLElBQUksZUFBZSxJQUFJLG1CQUFtQixJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsRUFBRTtZQUNoRyxLQUFLLEdBQU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBRyxDQUFDO1lBQ3pELG1CQUFtQixHQUFHLGVBQWUsQ0FBQztZQUN0QyxlQUFlLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLGVBQWUsR0FBRyxJQUFJLENBQUM7U0FDeEI7YUFBTTtZQUNMLGVBQWUsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3hDLG1CQUFtQixHQUFHLGVBQWUsQ0FBQztZQUN0QyxlQUFlLEdBQUcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUN6QztLQUNGO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBR0Q7Ozs7OztHQU1HO0FBQ0gsSUFBTSxXQUFXLEdBQ2YsVUFBQyxDQUFTLEVBQUUsVUFBbUIsSUFBYSxPQUFBLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUF6RCxDQUF5RCxDQUFDOztBQUd4Rzs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxLQUFhLEVBQUUsVUFBa0I7SUFBbEIsMkJBQUEsRUFBQSxrQkFBa0I7SUFDM0QsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNWLE9BQU8sU0FBUyxDQUFDO0tBQ2xCO0lBRUQsa0JBQWtCO0lBQ2xCLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFckIsOEJBQThCO0lBQzlCLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDdEIsT0FBTyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0tBQy9EO0lBRUQsdURBQXVEO0lBQ3ZELElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUM1QixPQUFPLFdBQVcsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7S0FDdkM7SUFFRCxrQ0FBa0M7SUFDbEMsSUFBSSxLQUFLLEtBQUssS0FBSyxDQUFDLFdBQVcsRUFBRSxFQUFFO1FBQ2pDLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUNsQztJQUVELEtBQUssR0FBRyxLQUFLO1NBQ1YsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7U0FDeEIsV0FBVyxFQUFFO1NBQ2IsT0FBTyxDQUFDLGlCQUFpQixFQUFFLFVBQUMsQ0FBQyxFQUFFLEVBQVUsSUFBSyxPQUFBLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBaEIsQ0FBZ0IsQ0FBQyxDQUFDO0lBRW5FLE9BQU8sV0FBVyxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztBQUN4QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqICdJbnNwaXJlZCcgYnkgaHR0cHM6Ly9naXRodWIuY29tL3NpbmRyZXNvcmh1cy9jYW1lbGNhc2VcbiAqL1xuXG5cbi8qKlxuICogRnVuY3Rpb24gdGhhdCBwcmVzZXJ2ZXMgY2FtZWwgY2FzZVxuICpcbiAqIEBwYXJhbSBpbnB1dCAtIFRoZSBzdHJpbmcgaW5wdXRcbiAqIEByZXR1cm5zIFRoZSBhZGp1c3RlZCBzdHJpbmdcbiAqL1xuZnVuY3Rpb24gcHJlc2VydmVDYW1lbENhc2UoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGxldCBpc0xhc3RDaGFyTG93ZXIgPSBmYWxzZTtcbiAgbGV0IGlzTGFzdENoYXJVcHBlciA9IGZhbHNlO1xuICBsZXQgaXNMYXN0TGFzdENoYXJVcHBlciA9IGZhbHNlO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBjID0gaW5wdXRbaV07XG5cbiAgICBpZiAoaXNMYXN0Q2hhckxvd2VyICYmIC9bYS16QS1aXS8udGVzdChjKSAmJiBjLnRvVXBwZXJDYXNlKCkgPT09IGMpIHtcbiAgICAgIGlucHV0ID0gYCR7aW5wdXQuc2xpY2UoMCwgaSl9LSR7aW5wdXQuc2xpY2UoaSl9YDtcbiAgICAgIGlzTGFzdENoYXJMb3dlciA9IGZhbHNlO1xuICAgICAgaXNMYXN0TGFzdENoYXJVcHBlciA9IGlzTGFzdENoYXJVcHBlcjtcbiAgICAgIGlzTGFzdENoYXJVcHBlciA9IHRydWU7XG4gICAgICBpKys7XG4gICAgfSBlbHNlIGlmIChpc0xhc3RDaGFyVXBwZXIgJiYgaXNMYXN0TGFzdENoYXJVcHBlciAmJiAvW2EtekEtWl0vLnRlc3QoYykgJiYgYy50b0xvd2VyQ2FzZSgpID09PSBjKSB7XG4gICAgICBpbnB1dCA9IGAke2lucHV0LnNsaWNlKDAsIGkgLSAxKX0tJHtpbnB1dC5zbGljZShpIC0gMSl9YDtcbiAgICAgIGlzTGFzdExhc3RDaGFyVXBwZXIgPSBpc0xhc3RDaGFyVXBwZXI7XG4gICAgICBpc0xhc3RDaGFyVXBwZXIgPSBmYWxzZTtcbiAgICAgIGlzTGFzdENoYXJMb3dlciA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlzTGFzdENoYXJMb3dlciA9IGMudG9Mb3dlckNhc2UoKSA9PT0gYztcbiAgICAgIGlzTGFzdExhc3RDaGFyVXBwZXIgPSBpc0xhc3RDaGFyVXBwZXI7XG4gICAgICBpc0xhc3RDaGFyVXBwZXIgPSBjLnRvVXBwZXJDYXNlKCkgPT09IGM7XG4gICAgfVxuICB9XG4gIHJldHVybiBpbnB1dDtcbn1cblxuXG4vKipcbiAqIFBvc3QgcHJvY2VzcyBhIGNvbnZlcnNpb24gaW50byBQYXNjYWxDYXNlIGlmIG5lY2Vzc2FyeVxuICpcbiAqIEBwYXJhbSB4IC0gVGhlIHN0cmluZ1xuICogQHBhcmFtIHBhc2NhbENhc2UgLSBBIGJvb2xlYW4gcmVwcmVzZW50aW5nIGlmIHRoZSBzdHJpbmcgc2hvdWxkIGJlIGNvbnZlcnRlZCB0byBQYXNjYWxDYXNlXG4gKiBAcmV0dXJucyBUaGUgZmluYWwgc3RyaW5nXG4gKi9cbmNvbnN0IHBvc3RQcm9jZXNzID1cbiAgKHg6IHN0cmluZywgcGFzY2FsQ2FzZTogYm9vbGVhbik6IHN0cmluZyA9PiAocGFzY2FsQ2FzZSA/IHguY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB4LnNsaWNlKDEpIDogeCk7XG5cblxuLyoqXG4gKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGNhbWVsQ2FzZVxuICpcbiAqIEBwYXJhbSBpbnB1dCAtIFRoZSBzdHJpbmcgdG8gY29udmVydFxuICogQHBhcmFtIHBhc2NhbENhc2UgLSBBIGJvb2xlYW4gcmVwcmVzZW50aW5nIGlmIHRoZSBzdHJpbmcgc2hvdWxkIGJlIGNvbnZlcnRlZCB0byBQYXNjYWxDYXNlXG4gKiBAcmV0dXJucyBUaGUgY2FtZWxDYXNlIHZlcnNpb24gb2YgdGhlIHN0cmluZ1xuICpcbiAqIEBleGFtcGxlXG4gKiB0b0NhbWVsQ2FzZSgnTVlfVEVYVCcpICAgICAgIC8vIFJldHVybnM6IGBteVRleHRgXG4gKiB0b0NhbWVsQ2FzZSgnTVlfVEVYVCcsIHRydWUpIC8vIFJldHVybnM6IGBNeVRleHRgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0NhbWVsQ2FzZShpbnB1dDogc3RyaW5nLCBwYXNjYWxDYXNlID0gZmFsc2UpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoIWlucHV0KSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIFRyaW0gd2hpdGVzcGFjZVxuICBpbnB1dCA9IGlucHV0LnRyaW0oKTtcblxuICAvLyBUZXN0IGZvciBhIHNpbmdsZSBjaGFyYWN0ZXJcbiAgaWYgKGlucHV0Lmxlbmd0aCA9PT0gMSkge1xuICAgIHJldHVybiBwYXNjYWxDYXNlID8gaW5wdXQudG9VcHBlckNhc2UoKSA6IGlucHV0LnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICAvLyBUZXN0IGlmIHdlIGFyZSBkZWFsaW5nIHdpdGggYSBzaW5nbGUgbG93ZXJjYXNlZCB3b3JkXG4gIGlmICgvXlthLXpcXGRdKyQvLnRlc3QoaW5wdXQpKSB7XG4gICAgcmV0dXJuIHBvc3RQcm9jZXNzKGlucHV0LCBwYXNjYWxDYXNlKTtcbiAgfVxuXG4gIC8vIFRlc3QgaWYgdGhlcmUgYXJlIGFueSB1cHBlcmNhc2VcbiAgaWYgKGlucHV0ICE9PSBpbnB1dC50b0xvd2VyQ2FzZSgpKSB7XG4gICAgaW5wdXQgPSBwcmVzZXJ2ZUNhbWVsQ2FzZShpbnB1dCk7XG4gIH1cblxuICBpbnB1dCA9IGlucHV0XG4gICAgLnJlcGxhY2UoL15bXy5cXC0gXSsvLCAnJylcbiAgICAudG9Mb3dlckNhc2UoKVxuICAgIC5yZXBsYWNlKC9bXy5cXC0gXSsoXFx3fCQpL2csIChtLCBwMTogc3RyaW5nKSA9PiBwMS50b1VwcGVyQ2FzZSgpKTtcblxuICByZXR1cm4gcG9zdFByb2Nlc3MoaW5wdXQsIHBhc2NhbENhc2UpO1xufVxuIl19