UNPKG

ts-prime

Version:

A utility library for JavaScript and Typescript.

47 lines (46 loc) 2.29 kB
"use strict"; 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;