-
Notifications
You must be signed in to change notification settings - Fork 0
/
parseDTO.js
65 lines (47 loc) · 1.12 KB
/
parseDTO.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/**
* @author Enéas Almeida <eneas.eng@yahoo.com>
*/
const isUpperCase = (stg) => /^[A-Z]*$/.test(stg);
const parseString = (stg) => {
const count = stg.length;
let k = stg.length,
i = 0;
const pos = [],
terms = [];
while (k--) {
if (isUpperCase(stg.charAt(i)) && i) {
pos.push(i);
}
i++;
}
let initial = 0;
if (pos.length) {
pos.forEach((pValue) => {
terms.push(stg.toLowerCase().slice(initial, pValue));
initial = pValue;
});
terms.push(stg.toLowerCase().slice(initial, count));
}
return pos.length ? terms.join('_') : stg.toLowerCase();
};
const parseDTO = (data) => {
const aux = {};
Object.keys(data).forEach((key) => {
aux[parseString(key)] = data[key];
});
return aux;
};
const original = {
Age: 20,
firstName: 'Tiago',
lastName: 'Rizzo',
iconFileActor: 'camarao.png',
};
const parsed = parseDTO(original);
console.log(parsed);
// {
// age: 20,
// first_name: 'Tiago',
// last_name: 'Rizzo',
// icon_file_actor: 'camarao.png'
// }