Skip to content

Commit 9e99aca

Browse files
committed
v1.0.4
1 parent dfe2368 commit 9e99aca

File tree

11 files changed

+144
-1292
lines changed

11 files changed

+144
-1292
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
node_modules/
2+
dist/

dist/index.js

Lines changed: 36 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,53 @@
22
Object.defineProperty(exports, "__esModule", { value: true });
33
exports.shortName = void 0;
44
const shortName = (fullName) => {
5-
let nameSplit = fullName.split(' ');
5+
let nameSplit = fullName.split(' ').filter(Boolean);
66
let array = ['de', 'do', 'dos', 'da', 'das', 'e'];
77
var penultimate = '';
88
if (array.includes(nameSplit[nameSplit.length - 2])) {
99
penultimate = nameSplit[nameSplit.length - 2];
1010
}
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+
}
1317
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")
1725
.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+
}
2139
}
2240
}
41+
if (flag)
42+
middleName += prep + ' ';
2343
}
24-
let first = name.shift();
25-
let last = name.pop();
44+
let first = nameSplit.shift();
45+
let last = nameSplit.pop();
2646
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) {
2852
return first[0].toUpperCase() + first.substring(1).toLowerCase() +
2953
middleName + penultimate + ' ' + last[0].toUpperCase() + last.substring(1).toLowerCase();
3054
}

jest.config.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module.exports = {
2+
preset: 'ts-jest',
3+
testEnvironment: 'node',
4+
testMatch: ['**/tests/*.test.ts'],
5+
};

0 commit comments

Comments
 (0)