typia 6.5.2 → 6.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -20,6 +20,7 @@ type CamelizeObject<T extends object> = T extends Array<infer U> ? IsTuple<T> ex
20
20
  [Key in keyof T as CamelizeString<Key & string>]: CamelizeMain<T[Key]>;
21
21
  };
22
22
  type CamelizeTuple<T extends readonly any[]> = T extends [] ? [] : T extends [infer F] ? [CamelizeMain<F>] : T extends [infer F, ...infer Rest extends readonly any[]] ? [CamelizeMain<F>, ...CamelizeTuple<Rest>] : T extends [(infer F)?] ? [CamelizeMain<F>?] : T extends [(infer F)?, ...infer Rest extends readonly any[]] ? [CamelizeMain<F>?, ...CamelizeTuple<Rest>] : [];
23
- type CamelizeString<Key extends string> = Key extends `_${infer R}` ? `_${CamelizeString<R>}` : Key extends `${infer F}${infer R}` ? `${Lowercase<F>}${CamelizeStringRepeatedly<R>}` : Key;
24
- type CamelizeStringRepeatedly<Key extends string> = Key extends `${infer F}_${infer R}` ? `${F}${Capitalize<CamelizeStringRepeatedly<R>>}` : Key;
23
+ type CamelizeString<Key extends string> = Key extends `_${infer R}` ? `_${CamelizeString<R>}` : Key extends `${infer _F}_${infer _R}` ? CamelizeSnakeString<Key> : Key extends Uppercase<Key> ? Lowercase<Key> : CamelizePascalString<Key>;
24
+ type CamelizePascalString<Key extends string> = Key extends `${infer F}${infer R}` ? `${Lowercase<F>}${R}` : Key;
25
+ type CamelizeSnakeString<Key extends string> = Key extends `_${infer R}` ? CamelizeSnakeString<R> : Key extends `${infer F}_${infer M}${infer R}` ? M extends "_" ? CamelizeSnakeString<`${F}_${R}`> : `${Lowercase<F>}${Uppercase<M>}${CamelizeSnakeString<R>}` : Lowercase<Key>;
25
26
  export {};
@@ -20,6 +20,6 @@ type PascalizeObject<T extends object> = T extends Array<infer U> ? IsTuple<T> e
20
20
  [Key in keyof T as PascalizeString<Key & string>]: PascalizeMain<T[Key]>;
21
21
  };
22
22
  type PascalizeTuple<T extends readonly any[]> = T extends [] ? [] : T extends [infer F] ? [PascalizeMain<F>] : T extends [infer F, ...infer Rest extends readonly any[]] ? [PascalizeMain<F>, ...PascalizeTuple<Rest>] : T extends [(infer F)?] ? [PascalizeMain<F>?] : T extends [(infer F)?, ...infer Rest extends readonly any[]] ? [PascalizeMain<F>?, ...PascalizeTuple<Rest>] : [];
23
- type PascalizeString<Key extends string> = Key extends `_${infer R}` ? `_${PascalizeString<R>}` : Key extends `${infer F}${infer R}` ? `${Uppercase<F>}${PascalizeStringRepeatedly<R>}` : Key;
24
- type PascalizeStringRepeatedly<Key extends string> = Key extends `${infer F}_${infer R}` ? `${F}${Capitalize<PascalizeStringRepeatedly<R>>}` : Key;
23
+ type PascalizeString<Key extends string> = Key extends `_${infer R}` ? `_${PascalizeString<R>}` : Key extends `${infer _F}_${infer _R}` ? PascalizeSnakeString<Key> : Capitalize<Key>;
24
+ type PascalizeSnakeString<Key extends string> = Key extends `_${infer R}` ? PascalizeSnakeString<R> : Key extends `${infer F}${infer M}_${infer R}` ? `${Uppercase<F>}${Lowercase<M>}${PascalizeSnakeString<R>}` : Key extends `${infer F}${infer R}` ? `${Uppercase<F>}${Lowercase<R>}` : Key;
25
25
  export {};
@@ -1,3 +1,3 @@
1
1
  export declare function snake(str: string): string;
2
- export declare function camel(str: string): string;
3
- export declare function pascal(str: string): string;
2
+ export declare const camel: (str: string) => string;
3
+ export declare const pascal: (str: string) => string;
@@ -1,26 +1,28 @@
1
1
  "use strict";
2
- var __read = (this && this.__read) || function (o, n) {
3
- var m = typeof Symbol === "function" && o[Symbol.iterator];
4
- if (!m) return o;
5
- var i = m.call(o), r, ar = [], e;
6
- try {
7
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
- }
9
- catch (error) { e = { error: error }; }
10
- finally {
11
- try {
12
- if (r && !r.done && (m = i["return"])) m.call(i);
13
- }
14
- finally { if (e) throw e.error; }
15
- }
16
- return ar;
17
- };
18
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pascal = exports.camel = void 0;
19
4
  exports.snake = snake;
20
- exports.camel = camel;
21
- exports.pascal = pascal;
22
5
  var StringUtil_1 = require("../StringUtil");
23
6
  function snake(str) {
7
+ if (str.length === 0)
8
+ return str;
9
+ // PREFIX
10
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
11
+ var prefix = "";
12
+ for (var i = 0; i < str.length; i++) {
13
+ if (str[i] === "_")
14
+ prefix += "_";
15
+ else
16
+ break;
17
+ }
18
+ if (prefix.length !== 0)
19
+ str = str.substring(prefix.length);
20
+ var out = function (s) { return "".concat(prefix).concat(s); };
21
+ // SNAKE CASE
22
+ var items = str.split("_");
23
+ if (items.length > 1)
24
+ return out(items.map(function (s) { return s.toLowerCase(); }).join("_"));
25
+ // CAMEL OR PASCAL CASE
24
26
  var indexes = [];
25
27
  for (var i = 0; i < str.length; i++) {
26
28
  var code = str.charCodeAt(i);
@@ -45,29 +47,33 @@ function snake(str) {
45
47
  ret += "_";
46
48
  }
47
49
  ret += str.substring(indexes[indexes.length - 1]).toLowerCase();
48
- return ret;
50
+ return out(ret);
49
51
  }
50
- function camel(str) {
51
- return unsnake(function (str) {
52
- if (str.length === 0)
53
- return str;
54
- else if (str[0] === str[0].toUpperCase())
55
- return str[0].toLowerCase() + str.substring(1);
56
- else
57
- return str;
52
+ var camel = function (str) {
53
+ return unsnake({
54
+ plain: function (str) {
55
+ return str.length
56
+ ? str === str.toUpperCase()
57
+ ? str.toLocaleLowerCase()
58
+ : "".concat(str[0].toLowerCase()).concat(str.substring(1))
59
+ : str;
60
+ },
61
+ snake: function (str, i) {
62
+ return i === 0 ? str.toLowerCase() : StringUtil_1.StringUtil.capitalize(str.toLowerCase());
63
+ },
58
64
  })(str);
59
- }
60
- function pascal(str) {
61
- return unsnake(function (str) {
62
- if (str.length === 0)
63
- return str;
64
- else if (str[0] === str[0].toLowerCase())
65
- return str[0].toUpperCase() + str.substring(1);
66
- else
67
- return str;
65
+ };
66
+ exports.camel = camel;
67
+ var pascal = function (str) {
68
+ return unsnake({
69
+ plain: function (str) {
70
+ return str.length ? "".concat(str[0].toUpperCase()).concat(str.substring(1)) : str;
71
+ },
72
+ snake: StringUtil_1.StringUtil.capitalize,
68
73
  })(str);
69
- }
70
- var unsnake = function (escaper) {
74
+ };
75
+ exports.pascal = pascal;
76
+ var unsnake = function (props) {
71
77
  return function (str) {
72
78
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
73
79
  var prefix = "";
@@ -79,40 +85,15 @@ var unsnake = function (escaper) {
79
85
  }
80
86
  if (prefix.length !== 0)
81
87
  str = str.substring(prefix.length);
82
- var indexes = [];
83
- for (var i = 0; i < str.length; i++) {
84
- var ch = str[i];
85
- if (ch !== "_")
86
- continue;
87
- var last_1 = indexes[indexes.length - 1];
88
- if (last_1 === undefined || last_1[0] + last_1[1] !== i)
89
- indexes.push([i, 1]);
90
- else
91
- ++last_1[1];
92
- }
93
- if (indexes.length === 0)
94
- return prefix + escaper(str);
95
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
96
- var ret = "";
97
- for (var i = 0; i < indexes.length; i++) {
98
- var _a = __read(indexes[i], 1), first = _a[0];
99
- if (i === 0)
100
- if (first === 0)
101
- ret += "_";
102
- else
103
- ret += str.substring(0, first);
104
- else {
105
- var _b = __read(indexes[i - 1], 2), prevFirst = _b[0], prevLength = _b[1];
106
- var piece_1 = str.substring(prevFirst + prevLength, first);
107
- if (piece_1.length)
108
- ret += StringUtil_1.StringUtil.capitalize(piece_1);
109
- }
110
- }
111
- var last = indexes[indexes.length - 1];
112
- var piece = str.substring(last[0] + last[1]);
113
- if (last.length)
114
- ret += StringUtil_1.StringUtil.capitalize(piece);
115
- return prefix + escaper(ret);
88
+ var out = function (s) { return "".concat(prefix).concat(s); };
89
+ if (str.length === 0)
90
+ return out("");
91
+ var items = str.split("_").filter(function (s) { return s.length !== 0; });
92
+ return items.length === 0
93
+ ? out("")
94
+ : items.length === 1
95
+ ? out(props.plain(items[0]))
96
+ : out(items.map(props.snake).join(""));
116
97
  };
117
98
  };
118
99
  //# sourceMappingURL=NamingConvention.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NamingConvention.js","sourceRoot":"","sources":["../../../src/utils/NamingConvention/NamingConvention.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NamingConvention.js","sourceRoot":"","sources":["../../../src/utils/NamingConvention/NamingConvention.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,25 @@
1
1
  import { capitalize } from '../StringUtil/StringUtil.mjs';
2
2
 
3
3
  function snake(str) {
4
+ if (str.length === 0)
5
+ return str;
6
+ // PREFIX
7
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
8
+ let prefix = "";
9
+ for (let i = 0; i < str.length; i++) {
10
+ if (str[i] === "_")
11
+ prefix += "_";
12
+ else
13
+ break;
14
+ }
15
+ if (prefix.length !== 0)
16
+ str = str.substring(prefix.length);
17
+ const out = (s) => `${prefix}${s}`;
18
+ // SNAKE CASE
19
+ const items = str.split("_");
20
+ if (items.length > 1)
21
+ return out(items.map((s) => s.toLowerCase()).join("_"));
22
+ // CAMEL OR PASCAL CASE
4
23
  const indexes = [];
5
24
  for (let i = 0; i < str.length; i++) {
6
25
  const code = str.charCodeAt(i);
@@ -25,29 +44,21 @@ function snake(str) {
25
44
  ret += "_";
26
45
  }
27
46
  ret += str.substring(indexes[indexes.length - 1]).toLowerCase();
28
- return ret;
29
- }
30
- function camel(str) {
31
- return unsnake((str) => {
32
- if (str.length === 0)
33
- return str;
34
- else if (str[0] === str[0].toUpperCase())
35
- return str[0].toLowerCase() + str.substring(1);
36
- else
37
- return str;
38
- })(str);
47
+ return out(ret);
39
48
  }
40
- function pascal(str) {
41
- return unsnake((str) => {
42
- if (str.length === 0)
43
- return str;
44
- else if (str[0] === str[0].toLowerCase())
45
- return str[0].toUpperCase() + str.substring(1);
46
- else
47
- return str;
48
- })(str);
49
- }
50
- const unsnake = (escaper) => (str) => {
49
+ const camel = (str) => unsnake({
50
+ plain: (str) => str.length
51
+ ? str === str.toUpperCase()
52
+ ? str.toLocaleLowerCase()
53
+ : `${str[0].toLowerCase()}${str.substring(1)}`
54
+ : str,
55
+ snake: (str, i) => i === 0 ? str.toLowerCase() : capitalize(str.toLowerCase()),
56
+ })(str);
57
+ const pascal = (str) => unsnake({
58
+ plain: (str) => str.length ? `${str[0].toUpperCase()}${str.substring(1)}` : str,
59
+ snake: capitalize,
60
+ })(str);
61
+ const unsnake = (props) => (str) => {
51
62
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
52
63
  let prefix = "";
53
64
  for (let i = 0; i < str.length; i++) {
@@ -58,40 +69,15 @@ const unsnake = (escaper) => (str) => {
58
69
  }
59
70
  if (prefix.length !== 0)
60
71
  str = str.substring(prefix.length);
61
- const indexes = [];
62
- for (let i = 0; i < str.length; i++) {
63
- const ch = str[i];
64
- if (ch !== "_")
65
- continue;
66
- const last = indexes[indexes.length - 1];
67
- if (last === undefined || last[0] + last[1] !== i)
68
- indexes.push([i, 1]);
69
- else
70
- ++last[1];
71
- }
72
- if (indexes.length === 0)
73
- return prefix + escaper(str);
74
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
75
- let ret = "";
76
- for (let i = 0; i < indexes.length; i++) {
77
- const [first] = indexes[i];
78
- if (i === 0)
79
- if (first === 0)
80
- ret += "_";
81
- else
82
- ret += str.substring(0, first);
83
- else {
84
- const [prevFirst, prevLength] = indexes[i - 1];
85
- const piece = str.substring(prevFirst + prevLength, first);
86
- if (piece.length)
87
- ret += capitalize(piece);
88
- }
89
- }
90
- const last = indexes[indexes.length - 1];
91
- const piece = str.substring(last[0] + last[1]);
92
- if (last.length)
93
- ret += capitalize(piece);
94
- return prefix + escaper(ret);
72
+ const out = (s) => `${prefix}${s}`;
73
+ if (str.length === 0)
74
+ return out("");
75
+ const items = str.split("_").filter((s) => s.length !== 0);
76
+ return items.length === 0
77
+ ? out("")
78
+ : items.length === 1
79
+ ? out(props.plain(items[0]))
80
+ : out(items.map(props.snake).join(""));
95
81
  };
96
82
 
97
83
  export { camel, pascal, snake };
@@ -1 +1 @@
1
- {"version":3,"file":"NamingConvention.mjs","sources":["../../../src/utils/NamingConvention/NamingConvention.ts"],"sourcesContent":[null],"names":["StringUtil.capitalize"],"mappings":"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"}
1
+ {"version":3,"file":"NamingConvention.mjs","sources":["../../../src/utils/NamingConvention/NamingConvention.ts"],"sourcesContent":[null],"names":["StringUtil.capitalize"],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.escapeDuplicate = exports.capitalize = void 0;
4
4
  var capitalize = function (str) {
5
- return str.length ? str[0].toUpperCase() + str.slice(1) : str;
5
+ return str.length ? str[0].toUpperCase() + str.slice(1).toLowerCase() : str;
6
6
  };
7
7
  exports.capitalize = capitalize;
8
8
  var escapeDuplicate = function (keep) {
@@ -1 +1 @@
1
- {"version":3,"file":"StringUtil.js","sourceRoot":"","sources":["../../../src/utils/StringUtil/StringUtil.ts"],"names":[],"mappings":";;;AAAO,IAAM,UAAU,GAAG,UAAC,GAAW;IACpC,OAAA,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;AAAvD,CAAuD,CAAC;AAD7C,QAAA,UAAU,cACmC;AAEnD,IAAM,eAAe,GAC1B,UAAC,IAAc;IACf,OAAA,UAAC,MAAc;QACb,OAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAA,uBAAe,EAAC,IAAI,CAAC,CAAC,WAAI,MAAM,CAAE,CAAC,CAAC,CAAC,CAAC,MAAM;IAApE,CAAoE;AADtE,CACsE,CAAC;AAH5D,QAAA,eAAe,mBAG6C"}
1
+ {"version":3,"file":"StringUtil.js","sourceRoot":"","sources":["../../../src/utils/StringUtil/StringUtil.ts"],"names":[],"mappings":";;;AAAO,IAAM,UAAU,GAAG,UAAC,GAAW;IACpC,OAAA,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG;AAArE,CAAqE,CAAC;AAD3D,QAAA,UAAU,cACiD;AAEjE,IAAM,eAAe,GAC1B,UAAC,IAAc;IACf,OAAA,UAAC,MAAc;QACb,OAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAA,uBAAe,EAAC,IAAI,CAAC,CAAC,WAAI,MAAM,CAAE,CAAC,CAAC,CAAC,CAAC,MAAM;IAApE,CAAoE;AADtE,CACsE,CAAC;AAH5D,QAAA,eAAe,mBAG6C"}
@@ -1,4 +1,4 @@
1
- const capitalize = (str) => str.length ? str[0].toUpperCase() + str.slice(1) : str;
1
+ const capitalize = (str) => str.length ? str[0].toUpperCase() + str.slice(1).toLowerCase() : str;
2
2
 
3
3
  export { capitalize };
4
4
  //# sourceMappingURL=StringUtil.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"StringUtil.mjs","sources":["../../../src/utils/StringUtil/StringUtil.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAO,MAAM,UAAU,GAAG,CAAC,GAAW,KACpC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG;;;;"}
1
+ {"version":3,"file":"StringUtil.mjs","sources":["../../../src/utils/StringUtil/StringUtil.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAa,MAAA,UAAU,GAAG,CAAC,GAAW,KACpC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "typia",
3
- "version": "6.5.2",
3
+ "version": "6.5.3",
4
4
  "description": "Superfast runtime validators with only one line",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
package/src/CamelCase.ts CHANGED
@@ -59,10 +59,17 @@ type CamelizeTuple<T extends readonly any[]> = T extends []
59
59
 
60
60
  type CamelizeString<Key extends string> = Key extends `_${infer R}`
61
61
  ? `_${CamelizeString<R>}`
62
- : Key extends `${infer F}${infer R}`
63
- ? `${Lowercase<F>}${CamelizeStringRepeatedly<R>}`
64
- : Key;
65
- type CamelizeStringRepeatedly<Key extends string> =
66
- Key extends `${infer F}_${infer R}`
67
- ? `${F}${Capitalize<CamelizeStringRepeatedly<R>>}`
68
- : Key;
62
+ : Key extends `${infer _F}_${infer _R}`
63
+ ? CamelizeSnakeString<Key>
64
+ : Key extends Uppercase<Key>
65
+ ? Lowercase<Key>
66
+ : CamelizePascalString<Key>;
67
+ type CamelizePascalString<Key extends string> =
68
+ Key extends `${infer F}${infer R}` ? `${Lowercase<F>}${R}` : Key;
69
+ type CamelizeSnakeString<Key extends string> = Key extends `_${infer R}`
70
+ ? CamelizeSnakeString<R>
71
+ : Key extends `${infer F}_${infer M}${infer R}`
72
+ ? M extends "_"
73
+ ? CamelizeSnakeString<`${F}_${R}`>
74
+ : `${Lowercase<F>}${Uppercase<M>}${CamelizeSnakeString<R>}`
75
+ : Lowercase<Key>;
package/src/PascalCase.ts CHANGED
@@ -59,10 +59,13 @@ type PascalizeTuple<T extends readonly any[]> = T extends []
59
59
 
60
60
  type PascalizeString<Key extends string> = Key extends `_${infer R}`
61
61
  ? `_${PascalizeString<R>}`
62
- : Key extends `${infer F}${infer R}`
63
- ? `${Uppercase<F>}${PascalizeStringRepeatedly<R>}`
64
- : Key;
65
- type PascalizeStringRepeatedly<Key extends string> =
66
- Key extends `${infer F}_${infer R}`
67
- ? `${F}${Capitalize<PascalizeStringRepeatedly<R>>}`
68
- : Key;
62
+ : Key extends `${infer _F}_${infer _R}`
63
+ ? PascalizeSnakeString<Key>
64
+ : Capitalize<Key>;
65
+ type PascalizeSnakeString<Key extends string> = Key extends `_${infer R}`
66
+ ? PascalizeSnakeString<R>
67
+ : Key extends `${infer F}${infer M}_${infer R}`
68
+ ? `${Uppercase<F>}${Lowercase<M>}${PascalizeSnakeString<R>}`
69
+ : Key extends `${infer F}${infer R}`
70
+ ? `${Uppercase<F>}${Lowercase<R>}`
71
+ : Key;
@@ -1,6 +1,24 @@
1
1
  import { StringUtil } from "../StringUtil";
2
2
 
3
3
  export function snake(str: string): string {
4
+ if (str.length === 0) return str;
5
+
6
+ // PREFIX
7
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
8
+ let prefix: string = "";
9
+ for (let i: number = 0; i < str.length; i++) {
10
+ if (str[i] === "_") prefix += "_";
11
+ else break;
12
+ }
13
+ if (prefix.length !== 0) str = str.substring(prefix.length);
14
+
15
+ const out = (s: string) => `${prefix}${s}`;
16
+
17
+ // SNAKE CASE
18
+ const items: string[] = str.split("_");
19
+ if (items.length > 1) return out(items.map((s) => s.toLowerCase()).join("_"));
20
+
21
+ // CAMEL OR PASCAL CASE
4
22
  const indexes: number[] = [];
5
23
  for (let i: number = 0; i < str.length; i++) {
6
24
  const code: number = str.charCodeAt(i);
@@ -23,29 +41,33 @@ export function snake(str: string): string {
23
41
  ret += "_";
24
42
  }
25
43
  ret += str.substring(indexes[indexes.length - 1]!).toLowerCase();
26
- return ret;
44
+ return out(ret);
27
45
  }
28
46
 
29
- export function camel(str: string): string {
30
- return unsnake((str: string) => {
31
- if (str.length === 0) return str;
32
- else if (str[0] === str[0]!.toUpperCase())
33
- return str[0]!.toLowerCase() + str.substring(1);
34
- else return str;
47
+ export const camel = (str: string): string =>
48
+ unsnake({
49
+ plain: (str) =>
50
+ str.length
51
+ ? str === str.toUpperCase()
52
+ ? str.toLocaleLowerCase()
53
+ : `${str[0]!.toLowerCase()}${str.substring(1)}`
54
+ : str,
55
+ snake: (str, i) =>
56
+ i === 0 ? str.toLowerCase() : StringUtil.capitalize(str.toLowerCase()),
35
57
  })(str);
36
- }
37
58
 
38
- export function pascal(str: string): string {
39
- return unsnake((str: string) => {
40
- if (str.length === 0) return str;
41
- else if (str[0] === str[0]!.toLowerCase())
42
- return str[0]!.toUpperCase() + str.substring(1);
43
- else return str;
59
+ export const pascal = (str: string): string =>
60
+ unsnake({
61
+ plain: (str) =>
62
+ str.length ? `${str[0]!.toUpperCase()}${str.substring(1)}` : str,
63
+ snake: StringUtil.capitalize,
44
64
  })(str);
45
- }
46
65
 
47
66
  const unsnake =
48
- (escaper: (str: string) => string) =>
67
+ (props: {
68
+ plain: (str: string) => string;
69
+ snake: (str: string, index: number) => string;
70
+ }) =>
49
71
  (str: string): string => {
50
72
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
51
73
  let prefix: string = "";
@@ -55,32 +77,13 @@ const unsnake =
55
77
  }
56
78
  if (prefix.length !== 0) str = str.substring(prefix.length);
57
79
 
58
- const indexes: [number, number][] = [];
59
- for (let i: number = 0; i < str.length; i++) {
60
- const ch: string = str[i]!;
61
- if (ch !== "_") continue;
62
-
63
- const last = indexes[indexes.length - 1];
64
- if (last === undefined || last[0] + last[1] !== i) indexes.push([i, 1]);
65
- else ++last[1];
66
- }
67
- if (indexes.length === 0) return prefix + escaper(str);
80
+ const out = (s: string) => `${prefix}${s}`;
81
+ if (str.length === 0) return out("");
68
82
 
69
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
70
- let ret: string = "";
71
- for (let i: number = 0; i < indexes.length; i++) {
72
- const [first] = indexes[i]!;
73
- if (i === 0)
74
- if (first === 0) ret += "_";
75
- else ret += str.substring(0, first);
76
- else {
77
- const [prevFirst, prevLength] = indexes[i - 1]!;
78
- const piece: string = str.substring(prevFirst + prevLength, first);
79
- if (piece.length) ret += StringUtil.capitalize(piece);
80
- }
81
- }
82
- const last = indexes[indexes.length - 1]!;
83
- const piece: string = str.substring(last[0] + last[1]);
84
- if (last.length) ret += StringUtil.capitalize(piece);
85
- return prefix + escaper(ret);
83
+ const items: string[] = str.split("_").filter((s) => s.length !== 0);
84
+ return items.length === 0
85
+ ? out("")
86
+ : items.length === 1
87
+ ? out(props.plain(items[0]!))
88
+ : out(items.map(props.snake).join(""));
86
89
  };
@@ -1,5 +1,5 @@
1
1
  export const capitalize = (str: string) =>
2
- str.length ? str[0]!.toUpperCase() + str.slice(1) : str;
2
+ str.length ? str[0]!.toUpperCase() + str.slice(1).toLowerCase() : str;
3
3
 
4
4
  export const escapeDuplicate =
5
5
  (keep: string[]) =>