investira.sdk 2.3.2 → 2.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.vscode/launch.json +12 -2
- package/CHANGELOG.md +4 -0
- package/lib/tests/test_strings.js +3 -0
- package/lib/utils/dates.js +1 -1
- package/lib/utils/strings.js +62 -18
- package/lib/utils/validators.js +2 -1
- package/nodemon.json +1 -1
- package/package.json +5 -5
package/.vscode/launch.json
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -31,6 +31,9 @@ test('\ntoTitleCase', t => {
|
|
|
31
31
|
t.deepEqual(strings.toTitleCase('maRtin lutHer king III'), 'Martin Luther King III');
|
|
32
32
|
t.deepEqual(strings.toTitleCase('maRtin lutHer king iv'), 'Martin Luther King IV');
|
|
33
33
|
t.deepEqual(strings.toTitleCase('joão adalberto da silva álves'), 'João Adalberto da Silva Álves');
|
|
34
|
+
t.deepEqual(strings.toTitleCase("Alberto D'avila"), "Alberto D'Avila");
|
|
35
|
+
t.deepEqual(strings.toTitleCase('Alberto D`avila'), 'Alberto D`Avila');
|
|
36
|
+
t.deepEqual(strings.toTitleCase('F.a.e.'), 'F.A.E.');
|
|
34
37
|
t.end();
|
|
35
38
|
});
|
|
36
39
|
|
package/lib/utils/dates.js
CHANGED
|
@@ -543,7 +543,7 @@ const dates = {
|
|
|
543
543
|
* @returns {Date}
|
|
544
544
|
*/
|
|
545
545
|
addWorkingDays: (pDate, pDays) => {
|
|
546
|
-
//Força para procurar o próximo dia útil
|
|
546
|
+
//Força para procurar o próximo dia útil se dia atual for feriado
|
|
547
547
|
if ((isNull(pDays) || pDays === 0) && !dates.isWorkingDay(pDate)) {
|
|
548
548
|
pDays = 1;
|
|
549
549
|
}
|
package/lib/utils/strings.js
CHANGED
|
@@ -3,9 +3,31 @@ const { isString, isEmpty } = require('./validators');
|
|
|
3
3
|
const { toArray } = require('./arrays');
|
|
4
4
|
|
|
5
5
|
const { InvalidData } = require('../messages/DataErrors');
|
|
6
|
-
const toTitleCaseIgnore = ['
|
|
7
|
-
const toTitleCaseFullUpperCase = [
|
|
6
|
+
const toTitleCaseIgnore = ['de', 'da', 'do', 'd', 'e', 'of', 'for', 'and'];
|
|
7
|
+
const toTitleCaseFullUpperCase = [
|
|
8
|
+
'i',
|
|
9
|
+
'ii',
|
|
10
|
+
'iii',
|
|
11
|
+
'iv',
|
|
12
|
+
'v',
|
|
13
|
+
'vi',
|
|
14
|
+
'vii',
|
|
15
|
+
'viii',
|
|
16
|
+
'ix',
|
|
17
|
+
'x',
|
|
18
|
+
'xi',
|
|
19
|
+
'xii',
|
|
20
|
+
'xiii',
|
|
21
|
+
'xiv',
|
|
22
|
+
'xv',
|
|
23
|
+
'xvi',
|
|
24
|
+
'xvii',
|
|
25
|
+
'xviii',
|
|
26
|
+
'xix',
|
|
27
|
+
'xx'
|
|
28
|
+
];
|
|
8
29
|
|
|
30
|
+
const toTitleCaseSeparators = ["'", '`', '.', '-', '(', ')', ':', ',', ';'];
|
|
9
31
|
const strings = {
|
|
10
32
|
/**
|
|
11
33
|
* Substitui a ocorrência de uma string por outra
|
|
@@ -76,7 +98,7 @@ const strings = {
|
|
|
76
98
|
},
|
|
77
99
|
|
|
78
100
|
/**
|
|
79
|
-
* Retorna string formatada como nome próprio
|
|
101
|
+
* Retorna uma string formatada como nome próprio, ou seja, com a primeira letra de cada palavra em maiúscula e as outras letras em minúscula, exceto palavras especiais que devem ser mantidas maiúsculas.
|
|
80
102
|
*
|
|
81
103
|
* @param {string} pString
|
|
82
104
|
* @returns
|
|
@@ -88,22 +110,11 @@ const strings = {
|
|
|
88
110
|
if (!isString(pString)) {
|
|
89
111
|
throw new InvalidData('[spellChecker.checkTitleCase] is not a string [' + JSON.stringify(pString) + ']');
|
|
90
112
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
// });
|
|
95
|
-
let xLista = pString.split(' ');
|
|
96
|
-
let xResult = '';
|
|
97
|
-
for (let xPalavra of xLista) {
|
|
98
|
-
if (toTitleCaseIgnore.includes(xPalavra)) {
|
|
99
|
-
xResult += xPalavra + ' ';
|
|
100
|
-
} else if (toTitleCaseFullUpperCase.includes(xPalavra)) {
|
|
101
|
-
xResult += xPalavra.toUpperCase() + ' ';
|
|
102
|
-
} else {
|
|
103
|
-
xResult += xPalavra.charAt(0).toUpperCase() + xPalavra.slice(1).toLowerCase() + ' ';
|
|
104
|
-
}
|
|
113
|
+
let xString = pvtoTitleCase(pString);
|
|
114
|
+
for (const xSepatator of toTitleCaseSeparators) {
|
|
115
|
+
xString = pvtoTitleCase(xString, xSepatator);
|
|
105
116
|
}
|
|
106
|
-
return
|
|
117
|
+
return xString;
|
|
107
118
|
},
|
|
108
119
|
/**
|
|
109
120
|
* Retorna um objeto com os paramentos da querystring
|
|
@@ -188,3 +199,36 @@ const strings = {
|
|
|
188
199
|
};
|
|
189
200
|
|
|
190
201
|
module.exports = strings;
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Retorna uma string formatada como nome próprio, ou seja, com a primeira letra de cada palavra em maiúscula e as outras letras em minúscula, exceto palavras especiais que devem ser mantidas maiúsculas.
|
|
205
|
+
*
|
|
206
|
+
* @param {string} pString - A string a ser formatada.
|
|
207
|
+
* @param {string} [pSplit=' '] - O separador utilizado para dividir a string em palavras. Por padrão, é um espaço em branco.
|
|
208
|
+
* @returns {string} - A string formatada como nome próprio.
|
|
209
|
+
*/
|
|
210
|
+
const pvtoTitleCase = (pString, pSplit) => {
|
|
211
|
+
// Define o separador padrão e converte a string para minúsculas, se o separador não foi especificado
|
|
212
|
+
if (!pSplit) {
|
|
213
|
+
pSplit = ' ';
|
|
214
|
+
pString = pString.toLocaleLowerCase();
|
|
215
|
+
}
|
|
216
|
+
// Divide a string em palavras e separa a primeira palavra da lista
|
|
217
|
+
const xPalavras = pString.split(pSplit);
|
|
218
|
+
const xPrimeira = xPalavras.shift();
|
|
219
|
+
// Formata as palavras restantes e as une em uma única string
|
|
220
|
+
const xPalavrasFormatadas = xPalavras.map(pWord => {
|
|
221
|
+
if (pSplit === ' ' && toTitleCaseIgnore.includes(pWord)) {
|
|
222
|
+
// Mantém a palavra em minúsculas, se for uma palavra ignorada no início de uma frase
|
|
223
|
+
return pWord;
|
|
224
|
+
} else if (toTitleCaseFullUpperCase.includes(pWord)) {
|
|
225
|
+
// Mantém a palavra em maiúsculas, se for uma palavra especial
|
|
226
|
+
return pWord.toUpperCase();
|
|
227
|
+
} else {
|
|
228
|
+
// Formata a palavra normalmente
|
|
229
|
+
return pWord.charAt(0).toUpperCase() + pWord.slice(1);
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
// Retorna a primeira palavra formatada e as palavras restantes unidas em uma única string, separadas pelo separador especificado
|
|
233
|
+
return [xPrimeira.charAt(0).toUpperCase() + xPrimeira.slice(1), ...xPalavrasFormatadas].join(pSplit);
|
|
234
|
+
};
|
package/lib/utils/validators.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
const EMAIL_REGEX =
|
|
1
|
+
const EMAIL_REGEX =
|
|
2
|
+
/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
|
|
2
3
|
|
|
3
4
|
const validators = {
|
|
4
5
|
/**
|
package/nodemon.json
CHANGED
package/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "investira.sdk",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.4",
|
|
4
4
|
"author": "Investira",
|
|
5
5
|
"description": "Investira SDK",
|
|
6
6
|
"main": "index.js",
|
|
7
7
|
"type": "commonjs",
|
|
8
8
|
"registry": true,
|
|
9
|
-
"raw": "investira.sdk@2.3.
|
|
9
|
+
"raw": "investira.sdk@2.3.4",
|
|
10
10
|
"escapedName": "investira.sdk",
|
|
11
|
-
"rawSpec": "2.3.
|
|
11
|
+
"rawSpec": "2.3.4",
|
|
12
12
|
"saveSpec": null,
|
|
13
|
-
"fetchSpec": "2.3.
|
|
13
|
+
"fetchSpec": "2.3.4",
|
|
14
14
|
"homepage": "https://investira.com.br/",
|
|
15
15
|
"engines": {
|
|
16
16
|
"node": ">=11.11.0 <=18.12",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"moment": "^2.29.4"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
|
-
"tape": "^4.16.
|
|
45
|
+
"tape": "^4.16.2"
|
|
46
46
|
},
|
|
47
47
|
"jshintConfig": {
|
|
48
48
|
"curly": true,
|