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.
- package/lib/CamelCase.d.ts +3 -2
- package/lib/PascalCase.d.ts +2 -2
- package/lib/utils/NamingConvention/NamingConvention.d.ts +2 -2
- package/lib/utils/NamingConvention/NamingConvention.js +53 -72
- package/lib/utils/NamingConvention/NamingConvention.js.map +1 -1
- package/lib/utils/NamingConvention/NamingConvention.mjs +42 -56
- package/lib/utils/NamingConvention/NamingConvention.mjs.map +1 -1
- package/lib/utils/StringUtil/StringUtil.js +1 -1
- package/lib/utils/StringUtil/StringUtil.js.map +1 -1
- package/lib/utils/StringUtil/StringUtil.mjs +1 -1
- package/lib/utils/StringUtil/StringUtil.mjs.map +1 -1
- package/package.json +1 -1
- package/src/CamelCase.ts +14 -7
- package/src/PascalCase.ts +10 -7
- package/src/utils/NamingConvention/NamingConvention.ts +46 -43
- package/src/utils/StringUtil/StringUtil.ts +1 -1
package/lib/CamelCase.d.ts
CHANGED
|
@@ -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
|
|
24
|
-
type
|
|
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 {};
|
package/lib/PascalCase.d.ts
CHANGED
|
@@ -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
|
|
24
|
-
type
|
|
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
|
|
3
|
-
export declare
|
|
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
|
|
51
|
-
return unsnake(
|
|
52
|
-
|
|
53
|
-
return str
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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
|
-
|
|
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
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
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":"
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
50
|
-
|
|
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
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
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":";;AAEM,SAAU,KAAK,CAAC,GAAW,EAAA;
|
|
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;
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StringUtil.mjs","sources":["../../../src/utils/StringUtil/StringUtil.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
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
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
|
|
63
|
-
?
|
|
64
|
-
: Key
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
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
|
|
63
|
-
?
|
|
64
|
-
: Key
|
|
65
|
-
type
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
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
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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
|
-
(
|
|
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
|
|
59
|
-
|
|
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
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
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
|
};
|