PluginProbe
Hostinger Tools / 3.0.61
Hostinger Tools v3.0.61
3.0.77 3.0.76 3.0.75 3.0.74 3.0.73 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 All 108 releases
hostinger / vue-frontend / src / utils / services / snakeCamelService.ts

snakeCamelService.ts in Hostinger Tools 3.0.61, at vue-frontend/src/utils/services/snakeCamelService.ts

126 lines 2.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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