ts-prime
Version:
A utility library for JavaScript and Typescript.
47 lines (46 loc) • 2.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var capitalize_1 = require("./capitalize");
var filter_1 = require("./filter");
var flatMap_1 = require("./flatMap");
var map_1 = require("./map");
var normalizeString_1 = require("./normalizeString");
var pipe_1 = require("./pipe");
/**
* Convert any string to nameCased variant
* @param str - the string
* @param to - convert string to 'PascalCase' | 'camelCase' | 'snake_case' | 'kebab-case' | 'Train-Case'
* @signature
* P.convertStringToNameCase(str, to);
* @example
* P.convertStringToNameCase("Super#@! ===-0- ball %%% cup", 'PascalCase') // -> Super0BallCup
* P.convertStringToNameCase("Super#@! ===-0- ball %%% cup", 'camelCase') // -> super0BallCup
* P.convertStringToNameCase("Super#@! ===-0- ball %%% cup", 'snake_case') // -> super_0_ball_cup
* P.convertStringToNameCase("Super#@! ===-0- ball %%% cup", 'kebab-case') // -> super-0-ball-cup
* P.convertStringToNameCase("Super#@! ===-0- ball %%% cup", 'Train-Case') // -> Super-0-Ball-Cup
* @category String
*/
function convertStringToNameCase(str, to) {
var result = pipe_1.pipe(str.split(' '), flatMap_1.flatMap(function (q) { return q.split(/(?=[A-Z])| |-/); }), map_1.map(function (w) { return normalizeString_1.normalizeString(w); }), filter_1.filter(function (q) { return !!q; }));
switch (to) {
case 'kebab-case':
return result.map(function (c) { return c.toLowerCase(); }).join('-');
case 'PascalCase':
return result.map(function (c) { return capitalize_1.capitalize(c.toLowerCase()); }).join('');
case 'Train-Case':
return result.map(function (c) { return capitalize_1.capitalize(c.toLowerCase()); }).join('-');
case 'snake_case':
return result.map(function (c) { return c.toLowerCase(); }).join('_');
case 'camelCase':
return result
.map(function (c, index) {
// tslint:disable-next-line:no-if-statement
if (index === 0) {
return c.toLowerCase();
}
return capitalize_1.capitalize(c.toLowerCase());
})
.join('');
}
}
exports.convertStringToNameCase = convertStringToNameCase;