PluginProbe ʕ •ᴥ•ʔ
Hostinger Tools / 3.0.72
Hostinger Tools v3.0.72
3.0.72 3.0.71 3.0.70 3.0.69 3.0.68 3.0.67 3.0.66 1.8.1 1.8.2 1.8.3 1.9.1 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.4 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.1.1 2.1.2 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 3.0.0 3.0.10 3.0.11 3.0.12 3.0.13 3.0.14 3.0.15 3.0.16 3.0.17 3.0.18 3.0.19 3.0.2 3.0.20 3.0.21 3.0.22 3.0.23 3.0.24 3.0.25 3.0.26 3.0.27 3.0.28 3.0.29 3.0.3 3.0.30 3.0.31 3.0.32 3.0.33 3.0.34 3.0.35 3.0.36 3.0.37 3.0.38 3.0.39 3.0.4 3.0.40 3.0.41 3.0.42 3.0.43 3.0.44 3.0.45 3.0.46 3.0.47 3.0.48 3.0.49 3.0.5 3.0.50 3.0.51 3.0.52 3.0.53 3.0.54 3.0.55 3.0.56 3.0.57 3.0.58 3.0.59 3.0.6 3.0.60 3.0.61 3.0.62 3.0.65 3.0.7 3.0.8 3.0.9 trunk 1.8.0
hostinger / vue-frontend / src / utils / services / snakeCamelService.ts
hostinger / vue-frontend / src / utils / services Last commit date
httpService.ts 10 months ago index.ts 1 year ago snakeCamelService.ts 10 months ago
snakeCamelService.ts
126 lines
1 import { isArray, isObject } from "lodash";
2
3 export const snakeToCamel = (string: string, pascal?: boolean) => {
4 const converter = (matches: string) => matches[1]?.toUpperCase();
5
6 let result = string?.toString().replace(/(_\w)/g, converter);
7
8 if (pascal) {
9 result = result?.charAt(0)?.toUpperCase() + result?.slice(1);
10 }
11
12 return result;
13 };
14
15 export const kebabToCamel = (string: string, pascal?: boolean) => {
16 const converter = (matches: string) => matches[1]?.toUpperCase();
17
18 let result = string?.toString().replace(/(-\w)/g, converter);
19
20 if (pascal) {
21 result = result?.charAt(0)?.toUpperCase() + result?.slice(1);
22 }
23
24 return result;
25 };
26 export const snakeToPascal = (string: string) =>
27 string
28 .split("/")
29 .map((snake: string) =>
30 snake
31 .split("_")
32 .map(
33 (substr: string) =>
34 substr.charAt(0).toUpperCase() + substr.slice(1)
35 )
36 .join("")
37 )
38 .join("/");
39
40 export const stringToPascal = (string: string) =>
41 string
42 .replace(
43 /(\w)(\w*)/g,
44 (w: string) => w[0].toUpperCase() + w.slice(1).toLowerCase()
45 )
46 .split(" ")
47 .join("")
48 .replace(/(\w)(\w*)/g, (w: string) => w[0].toLowerCase() + w.slice(1));
49
50 export const camelToSnake = (str: string) =>
51 str
52 .replace(/(^[A-Z])/, ([first]) => first.toLowerCase())
53 .replace(/([A-Z])/g, ([letter]) => `_${letter.toLowerCase()}`);
54
55 export const camelToReadable = (str: string) =>
56 camelToSnake(str).replace("_", " ");
57
58 export const snakeToCamelObj = (obj: unknown) => {
59 if (isObject(obj) && !isArray(obj)) {
60 const n: Record<string, unknown> = {};
61 Object.keys(obj as Record<string, unknown>).forEach((k) => {
62 n[snakeToCamel(k)] = snakeToCamelObj(
63 (obj as Record<string, unknown>)[k]
64 );
65 });
66
67 return n;
68 }
69
70 if (isArray(obj)) {
71 const n: unknown[] = [];
72 (obj as unknown[]).forEach((k: unknown) => n.push(snakeToCamelObj(k)));
73
74 return n;
75 }
76
77 return obj;
78 };
79
80 export const camelToSnakeObj = (obj: unknown) => {
81 if (isObject(obj) && !isArray(obj)) {
82 const n: Record<string, unknown> = {};
83 Object.keys(obj as Record<string, unknown>).forEach(
84 (k) =>
85 (n[camelToSnake(k)] = camelToSnakeObj(
86 (obj as Record<string, unknown>)[k]
87 ))
88 );
89
90 return n;
91 }
92
93 if (isArray(obj)) {
94 const n: unknown[] = [];
95 (obj as unknown[]).forEach((k: unknown) => n.push(camelToSnakeObj(k)));
96
97 return n;
98 }
99
100 return obj;
101 };
102
103 export const kebabToCamelObj = (obj: unknown) => {
104 if (isObject(obj) && !isArray(obj)) {
105 const n: Record<string, unknown> = {};
106 Object.keys(obj as Record<string, unknown>).forEach((k) => {
107 n[kebabToCamel(k)] = kebabToCamelObj(
108 (obj as Record<string, unknown>)[k]
109 );
110 });
111
112 return n;
113 }
114
115 if (isArray(obj)) {
116 const n: unknown[] = [];
117 (obj as unknown[]).forEach((k: unknown) => n.push(kebabToCamelObj(k)));
118
119 return n;
120 }
121
122 return obj;
123 };
124
125 export const snakeToReadable = (str: string) => str?.replace(/_/g, " ");
126