|
2 | 2 | Object.defineProperty(exports, "__esModule", { value: true }); |
3 | 3 | exports.shortName = void 0; |
4 | 4 | const shortName = (fullName) => { |
5 | | - let nameSplit = fullName.split(' '); |
| 5 | + let nameSplit = fullName.split(' ').filter(Boolean); |
6 | 6 | let array = ['de', 'do', 'dos', 'da', 'das', 'e']; |
7 | 7 | var penultimate = ''; |
8 | 8 | if (array.includes(nameSplit[nameSplit.length - 2])) { |
9 | 9 | penultimate = nameSplit[nameSplit.length - 2]; |
10 | 10 | } |
11 | | - let pattern = new RegExp(' de | do | dos | da | das | e ', 'gi'); |
12 | | - let name = fullName.replace(pattern, ' ').split(' '); |
| 11 | + for (let i = 0; i < nameSplit.length - 2; i++) { |
| 12 | + if (array.includes(nameSplit[i])) { |
| 13 | + nameSplit.splice(i, 1); |
| 14 | + i--; |
| 15 | + } |
| 16 | + } |
13 | 17 | let middleName = ' '; |
14 | | - if (name.length > 2) { |
15 | | - for (let i = 1; i < name.length - 1; i++) { |
16 | | - let string = name[i].normalize("NFD") |
| 18 | + if (nameSplit.length > 2) { |
| 19 | + let integer = 0; |
| 20 | + penultimate ? integer = nameSplit.length - 2 : integer = nameSplit.length - 1; |
| 21 | + let prep = ''; |
| 22 | + let flag = false; |
| 23 | + for (let i = 1; i < integer; i++) { |
| 24 | + let string = nameSplit[i].normalize("NFD") |
17 | 25 | .replace(/[\u0300-\u036f]/g, "") |
18 | | - .replace(/[^a-zA-Z0-9]/g, ""); |
19 | | - if (string[0] !== undefined) { |
20 | | - middleName += string[0].toUpperCase() + '. '; |
| 26 | + .replace(/[^a-zA-Z\s]/g, ""); |
| 27 | + flag = false; |
| 28 | + for (let j = 0; j < array.length; j++) { |
| 29 | + if (string === array[j]) { |
| 30 | + prep = string; |
| 31 | + flag = true; |
| 32 | + break; |
| 33 | + } |
| 34 | + } |
| 35 | + if (!flag) { |
| 36 | + if (string[0] !== undefined) { |
| 37 | + middleName += string[0].toUpperCase() + '. '; |
| 38 | + } |
21 | 39 | } |
22 | 40 | } |
| 41 | + if (flag) |
| 42 | + middleName += prep + ' '; |
23 | 43 | } |
24 | | - let first = name.shift(); |
25 | | - let last = name.pop(); |
| 44 | + let first = nameSplit.shift(); |
| 45 | + let last = nameSplit.pop(); |
26 | 46 | if (first && last) { |
27 | | - if (penultimate !== '') { |
| 47 | + first = first |
| 48 | + .replace(/[^a-záàâãéèêíïóôõöúçñA-ZÁÀÂÃÉÈÊÍÏÓÔÕÖÚÇÑ\s]/g, ""); |
| 49 | + last = last |
| 50 | + .replace(/[^a-záàâãéèêíïóôõöúçñA-ZÁÀÂÃÉÈÊÍÏÓÔÕÖÚÇÑ\s]/g, ""); |
| 51 | + if (penultimate) { |
28 | 52 | return first[0].toUpperCase() + first.substring(1).toLowerCase() + |
29 | 53 | middleName + penultimate + ' ' + last[0].toUpperCase() + last.substring(1).toLowerCase(); |
30 | 54 | } |
|
0 commit comments