devtoolz-library 1.1.0 → 1.2.0
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/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/text-letter-counter/models/text-letter-counter-result.d.ts +10 -0
- package/dist/text-letter-counter/models/text-letter-counter-result.js +3 -0
- package/dist/text-letter-counter/models/text-letter-counter-result.js.map +1 -0
- package/dist/text-letter-counter/tests/text-letter-counter.test.d.ts +1 -0
- package/dist/text-letter-counter/tests/text-letter-counter.test.js +161 -0
- package/dist/text-letter-counter/tests/text-letter-counter.test.js.map +1 -0
- package/dist/text-letter-counter/text-letter-counter.d.ts +7 -0
- package/dist/text-letter-counter/text-letter-counter.js +35 -0
- package/dist/text-letter-counter/text-letter-counter.js.map +1 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -23,3 +23,6 @@ export * from './converters/numeric-systems/numericSystem.converter';
|
|
|
23
23
|
export * from './converters/time-decimal/models/conversion-result.model';
|
|
24
24
|
export * from './converters/time-decimal/interfaces/ITimeDecimal.converter';
|
|
25
25
|
export * from './converters/time-decimal/time-decimal.converter';
|
|
26
|
+
export * from './converters/text-format/textFormatConverter.converter';
|
|
27
|
+
export * from './text-letter-counter/models/text-letter-counter-result';
|
|
28
|
+
export * from './text-letter-counter/text-letter-counter';
|
package/dist/index.js
CHANGED
|
@@ -40,4 +40,7 @@ __exportStar(require("./converters/numeric-systems/numericSystem.converter"), ex
|
|
|
40
40
|
__exportStar(require("./converters/time-decimal/models/conversion-result.model"), exports);
|
|
41
41
|
__exportStar(require("./converters/time-decimal/interfaces/ITimeDecimal.converter"), exports);
|
|
42
42
|
__exportStar(require("./converters/time-decimal/time-decimal.converter"), exports);
|
|
43
|
+
__exportStar(require("./converters/text-format/textFormatConverter.converter"), exports);
|
|
44
|
+
__exportStar(require("./text-letter-counter/models/text-letter-counter-result"), exports);
|
|
45
|
+
__exportStar(require("./text-letter-counter/text-letter-counter"), exports);
|
|
43
46
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0BAA0B;AAC1B,iEAA+C;AAC/C,iEAA+C;AAC/C,kEAAgD;AAChD,gEAA8C;AAE9C,6EAA2D;AAC3D,6EAA2D;AAC3D,6EAA2D;AAC3D,6EAA2D;AAE3D,sDAAoC;AACpC,gEAA8C;AAC9C,gEAA8C;AAC9C,gEAA8C;AAE9C,wDAAsC;AACtC,kEAAgD;AAChD,kEAAgD;AAChD,kEAAgD;AAEhD,2CAAyB;AACzB,qFAAmE;AACnE,wFAAsE;AACtE,0EAAwD;AACxD,qFAAkE;AAClE,uFAAoE;AACpE,2FAAyE;AACzE,8FAA4E;AAC5E,mFAAiE"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0BAA0B;AAC1B,iEAA+C;AAC/C,iEAA+C;AAC/C,kEAAgD;AAChD,gEAA8C;AAE9C,6EAA2D;AAC3D,6EAA2D;AAC3D,6EAA2D;AAC3D,6EAA2D;AAE3D,sDAAoC;AACpC,gEAA8C;AAC9C,gEAA8C;AAC9C,gEAA8C;AAE9C,wDAAsC;AACtC,kEAAgD;AAChD,kEAAgD;AAChD,kEAAgD;AAEhD,2CAAyB;AACzB,qFAAmE;AACnE,wFAAsE;AACtE,0EAAwD;AACxD,qFAAkE;AAClE,uFAAoE;AACpE,2FAAyE;AACzE,8FAA4E;AAC5E,mFAAiE;AACjE,yFAAuE;AAEvE,0FAAwE;AACxE,4EAA0D"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface TextLetterCounterResult {
|
|
2
|
+
readonly characters: number;
|
|
3
|
+
readonly charactersWithoutSpaces: number;
|
|
4
|
+
readonly spaces: number;
|
|
5
|
+
readonly consonants: number;
|
|
6
|
+
readonly vowels: number;
|
|
7
|
+
readonly numbers: number;
|
|
8
|
+
readonly words: number;
|
|
9
|
+
readonly sentences: number;
|
|
10
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-letter-counter-result.js","sourceRoot":"","sources":["../../../src/text-letter-counter/models/text-letter-counter-result.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const text_letter_counter_1 = require("../text-letter-counter");
|
|
4
|
+
describe("TextLetterCounter", () => {
|
|
5
|
+
let counter;
|
|
6
|
+
beforeEach(() => {
|
|
7
|
+
counter = new text_letter_counter_1.TextLetterCounter();
|
|
8
|
+
});
|
|
9
|
+
describe("count", () => {
|
|
10
|
+
describe("Dado uma string vazia", () => {
|
|
11
|
+
it("deve retornar zero em todos os campos", () => {
|
|
12
|
+
const result = counter.count("");
|
|
13
|
+
expect(result.characters).toBe(0);
|
|
14
|
+
expect(result.charactersWithoutSpaces).toBe(0);
|
|
15
|
+
expect(result.spaces).toBe(0);
|
|
16
|
+
expect(result.vowels).toBe(0);
|
|
17
|
+
expect(result.consonants).toBe(0);
|
|
18
|
+
expect(result.numbers).toBe(0);
|
|
19
|
+
expect(result.words).toBe(0);
|
|
20
|
+
expect(result.sentences).toBe(0);
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
describe("Dado uma string apenas com espaços", () => {
|
|
24
|
+
it("deve retornar words como zero e spaces igual ao total de espaços", () => {
|
|
25
|
+
const result = counter.count(" ");
|
|
26
|
+
expect(result.spaces).toBe(3);
|
|
27
|
+
expect(result.words).toBe(0);
|
|
28
|
+
expect(result.consonants).toBe(0);
|
|
29
|
+
expect(result.vowels).toBe(0);
|
|
30
|
+
expect(result.numbers).toBe(0);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
describe("Dado o texto 'Olá'", () => {
|
|
34
|
+
it("deve contar 3 caracteres", () => {
|
|
35
|
+
expect(counter.count("Olá").characters).toBe(3);
|
|
36
|
+
});
|
|
37
|
+
it("deve contar 2 vogais (O e á)", () => {
|
|
38
|
+
expect(counter.count("Olá").vowels).toBe(2);
|
|
39
|
+
});
|
|
40
|
+
it("deve contar 1 consoante (l)", () => {
|
|
41
|
+
expect(counter.count("Olá").consonants).toBe(1);
|
|
42
|
+
});
|
|
43
|
+
it("deve contar 1 palavra", () => {
|
|
44
|
+
expect(counter.count("Olá").words).toBe(1);
|
|
45
|
+
});
|
|
46
|
+
it("deve retornar 0 espaços", () => {
|
|
47
|
+
expect(counter.count("Olá").spaces).toBe(0);
|
|
48
|
+
});
|
|
49
|
+
it("deve retornar 3 caracteres sem espaço", () => {
|
|
50
|
+
expect(counter.count("Olá").charactersWithoutSpaces).toBe(3);
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
describe("Dado o texto 'abc 123'", () => {
|
|
54
|
+
it("deve contar 7 caracteres", () => {
|
|
55
|
+
expect(counter.count("abc 123").characters).toBe(7);
|
|
56
|
+
});
|
|
57
|
+
it("deve contar 3 números", () => {
|
|
58
|
+
expect(counter.count("abc 123").numbers).toBe(3);
|
|
59
|
+
});
|
|
60
|
+
it("deve contar 1 espaço", () => {
|
|
61
|
+
expect(counter.count("abc 123").spaces).toBe(1);
|
|
62
|
+
});
|
|
63
|
+
it("deve contar 6 caracteres sem espaço", () => {
|
|
64
|
+
expect(counter.count("abc 123").charactersWithoutSpaces).toBe(6);
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
describe("Dado contagem de palavras", () => {
|
|
68
|
+
it("deve contar 2 palavras em 'hello world'", () => {
|
|
69
|
+
expect(counter.count("hello world").words).toBe(2);
|
|
70
|
+
});
|
|
71
|
+
it("deve contar 3 palavras em 'uma frase simples'", () => {
|
|
72
|
+
expect(counter.count("uma frase simples").words).toBe(3);
|
|
73
|
+
});
|
|
74
|
+
it("deve ignorar espaços extras entre palavras", () => {
|
|
75
|
+
expect(counter.count("hello world").words).toBe(2);
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
describe("Dado contagem de frases", () => {
|
|
79
|
+
it("deve contar 2 frases em 'Olá! Tudo bem?'", () => {
|
|
80
|
+
expect(counter.count("Olá! Tudo bem?").sentences).toBe(2);
|
|
81
|
+
});
|
|
82
|
+
it("deve contar 1 frase em 'Isso é um teste.'", () => {
|
|
83
|
+
expect(counter.count("Isso é um teste.").sentences).toBe(1);
|
|
84
|
+
});
|
|
85
|
+
it("deve contar 3 frases com diferentes pontuações", () => {
|
|
86
|
+
expect(counter.count("Oi. Como vai? Tudo bem!").sentences).toBe(3);
|
|
87
|
+
});
|
|
88
|
+
it("deve tratar pontuação consecutiva como uma frase", () => {
|
|
89
|
+
expect(counter.count("Incrível!!!").sentences).toBe(1);
|
|
90
|
+
});
|
|
91
|
+
it("deve retornar 0 frases quando não há pontuação", () => {
|
|
92
|
+
expect(counter.count("Sem pontuação").sentences).toBe(0);
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
describe("Dado texto com acentos e caracteres portugueses", () => {
|
|
96
|
+
it("deve contar vogais acentuadas em 'ação'", () => {
|
|
97
|
+
// a, ã, o são vogais
|
|
98
|
+
expect(counter.count("ação").vowels).toBe(3);
|
|
99
|
+
});
|
|
100
|
+
it("deve contar ç como consoante", () => {
|
|
101
|
+
expect(counter.count("ação").consonants).toBe(1);
|
|
102
|
+
});
|
|
103
|
+
it("deve contar vogais em 'coração'", () => {
|
|
104
|
+
// o, a, ã, o = 4 vogais
|
|
105
|
+
expect(counter.count("coração").vowels).toBe(4);
|
|
106
|
+
});
|
|
107
|
+
it("deve contar consoantes em 'coração'", () => {
|
|
108
|
+
// c, r, ç = 3 consoantes
|
|
109
|
+
expect(counter.count("coração").consonants).toBe(3);
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
describe("Dado texto misto completo", () => {
|
|
113
|
+
it("deve calcular corretamente todos os campos para 'Olá Mundo! 123'", () => {
|
|
114
|
+
const result = counter.count("Olá Mundo! 123");
|
|
115
|
+
expect(result.characters).toBe(14);
|
|
116
|
+
expect(result.spaces).toBe(2);
|
|
117
|
+
expect(result.charactersWithoutSpaces).toBe(12);
|
|
118
|
+
expect(result.numbers).toBe(3);
|
|
119
|
+
expect(result.words).toBe(3);
|
|
120
|
+
expect(result.sentences).toBe(1);
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
describe("countValue", () => {
|
|
125
|
+
describe("Dado valor de busca vazio", () => {
|
|
126
|
+
it("deve retornar 0", () => {
|
|
127
|
+
expect(counter.countValue("qualquer texto", "")).toBe(0);
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
describe("Dado busca case sensitive (padrão)", () => {
|
|
131
|
+
it("deve encontrar 1 ocorrência de 'hello' em 'Hello hello'", () => {
|
|
132
|
+
expect(counter.countValue("Hello hello", "hello")).toBe(1);
|
|
133
|
+
});
|
|
134
|
+
it("deve encontrar 2 ocorrências de 'ab' em 'ab AB ab'", () => {
|
|
135
|
+
expect(counter.countValue("ab AB ab", "ab")).toBe(2);
|
|
136
|
+
});
|
|
137
|
+
it("deve retornar 0 quando não encontrar o valor", () => {
|
|
138
|
+
expect(counter.countValue("Hello World", "xyz")).toBe(0);
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
describe("Dado busca case insensitive", () => {
|
|
142
|
+
it("deve encontrar 2 ocorrências de 'hello' em 'Hello hello'", () => {
|
|
143
|
+
expect(counter.countValue("Hello hello", "hello", false)).toBe(2);
|
|
144
|
+
});
|
|
145
|
+
it("deve encontrar 3 ocorrências independente de capitalização", () => {
|
|
146
|
+
expect(counter.countValue("ABC abc Abc", "abc", false)).toBe(3);
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
describe("Dado busca com texto vazio", () => {
|
|
150
|
+
it("deve retornar 0 ao buscar em string vazia", () => {
|
|
151
|
+
expect(counter.countValue("", "abc")).toBe(0);
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
describe("Dado busca de ocorrências sobrepostas", () => {
|
|
155
|
+
it("deve contar ocorrências não sobrepostas", () => {
|
|
156
|
+
expect(counter.countValue("aaa", "aa")).toBe(1);
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
//# sourceMappingURL=text-letter-counter.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-letter-counter.test.js","sourceRoot":"","sources":["../../../src/text-letter-counter/tests/text-letter-counter.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { TextLetterCounterResult } from "./models/text-letter-counter-result";
|
|
2
|
+
export declare class TextLetterCounter {
|
|
3
|
+
private readonly _vowels;
|
|
4
|
+
private readonly _letterPattern;
|
|
5
|
+
count(text: string): TextLetterCounterResult;
|
|
6
|
+
countValue(text: string, value: string, caseSensitive?: boolean): number;
|
|
7
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TextLetterCounter = void 0;
|
|
4
|
+
class TextLetterCounter {
|
|
5
|
+
constructor() {
|
|
6
|
+
this._vowels = 'aeiouáéíóúàèìòùâêîôûãõäëïöüAEIOUÁÉÍÓÚÀÈÌÒÙÂÊÎÔÛÃÕÄËÏÖÜ';
|
|
7
|
+
this._letterPattern = /[a-záéíóúàèìòùâêîôûãõäëïöüçA-ZÁÉÍÓÚÀÈÌÒÙÂÊÎÔÛÃÕÄËÏÖÜÇ]/;
|
|
8
|
+
}
|
|
9
|
+
count(text) {
|
|
10
|
+
const characters = text.length;
|
|
11
|
+
const spaces = (text.match(/\s/g) ?? []).length;
|
|
12
|
+
const charactersWithoutSpaces = characters - spaces;
|
|
13
|
+
const vowels = [...text].filter(c => this._vowels.includes(c)).length;
|
|
14
|
+
const consonants = [...text].filter(c => this._letterPattern.test(c) && !this._vowels.includes(c)).length;
|
|
15
|
+
const numbers = (text.match(/\d/g) ?? []).length;
|
|
16
|
+
const words = text.trim() === '' ? 0 : text.trim().split(/\s+/).length;
|
|
17
|
+
const sentences = (text.match(/[.!?]+/g) ?? []).length;
|
|
18
|
+
return { characters, charactersWithoutSpaces, spaces, vowels, consonants, numbers, words, sentences };
|
|
19
|
+
}
|
|
20
|
+
countValue(text, value, caseSensitive = true) {
|
|
21
|
+
if (value === '')
|
|
22
|
+
return 0;
|
|
23
|
+
const haystack = caseSensitive ? text : text.toLowerCase();
|
|
24
|
+
const needle = caseSensitive ? value : value.toLowerCase();
|
|
25
|
+
let count = 0;
|
|
26
|
+
let pos = haystack.indexOf(needle);
|
|
27
|
+
while (pos !== -1) {
|
|
28
|
+
count++;
|
|
29
|
+
pos = haystack.indexOf(needle, pos + needle.length);
|
|
30
|
+
}
|
|
31
|
+
return count;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.TextLetterCounter = TextLetterCounter;
|
|
35
|
+
//# sourceMappingURL=text-letter-counter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-letter-counter.js","sourceRoot":"","sources":["../../src/text-letter-counter/text-letter-counter.ts"],"names":[],"mappings":";;;AAEA,MAAa,iBAAiB;IAA9B;QACqB,YAAO,GAAG,wDAAwD,CAAC;QACnE,mBAAc,GAAG,wDAAwD,CAAC;IA6B/F,CAAC;IA3BG,KAAK,CAAC,IAAY;QACd,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;QAC/B,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAChD,MAAM,uBAAuB,GAAG,UAAU,GAAG,MAAM,CAAC;QACpD,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACtE,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC1G,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;QACvE,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAEvD,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAC1G,CAAC;IAED,UAAU,CAAC,IAAY,EAAE,KAAa,EAAE,gBAAyB,IAAI;QACjE,IAAI,KAAK,KAAK,EAAE;YAAE,OAAO,CAAC,CAAC;QAE3B,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC3D,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAE3D,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACnC,OAAO,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;YAChB,KAAK,EAAE,CAAC;YACR,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ;AA/BD,8CA+BC"}
|