@designliquido/delegua 0.66.0 → 0.67.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.
Files changed (38) hide show
  1. package/bin/package.json +1 -1
  2. package/estilizador/estilizador-delegua.d.ts +55 -0
  3. package/estilizador/estilizador-delegua.d.ts.map +1 -0
  4. package/estilizador/estilizador-delegua.js +228 -0
  5. package/estilizador/estilizador-delegua.js.map +1 -0
  6. package/estilizador/index.d.ts +3 -0
  7. package/estilizador/index.d.ts.map +1 -0
  8. package/estilizador/index.js +19 -0
  9. package/estilizador/index.js.map +1 -0
  10. package/estilizador/regras/convencao-nomenclatura.d.ts +79 -0
  11. package/estilizador/regras/convencao-nomenclatura.d.ts.map +1 -0
  12. package/estilizador/regras/convencao-nomenclatura.js +148 -0
  13. package/estilizador/regras/convencao-nomenclatura.js.map +1 -0
  14. package/estilizador/regras/fortalecer-tipos.d.ts +28 -0
  15. package/estilizador/regras/fortalecer-tipos.d.ts.map +1 -0
  16. package/estilizador/regras/fortalecer-tipos.js +84 -0
  17. package/estilizador/regras/fortalecer-tipos.js.map +1 -0
  18. package/estilizador/regras/index.d.ts +3 -0
  19. package/estilizador/regras/index.d.ts.map +1 -0
  20. package/estilizador/regras/index.js +19 -0
  21. package/estilizador/regras/index.js.map +1 -0
  22. package/index.d.ts +1 -0
  23. package/index.d.ts.map +1 -1
  24. package/index.js +1 -0
  25. package/index.js.map +1 -1
  26. package/interfaces/estilizador-comum-interface.d.ts +85 -0
  27. package/interfaces/estilizador-comum-interface.d.ts.map +1 -0
  28. package/interfaces/estilizador-comum-interface.js +3 -0
  29. package/interfaces/estilizador-comum-interface.js.map +1 -0
  30. package/interfaces/index.d.ts +1 -0
  31. package/interfaces/index.d.ts.map +1 -1
  32. package/interfaces/index.js +1 -0
  33. package/interfaces/index.js.map +1 -1
  34. package/interpretador/depuracao/comum.d.ts.map +1 -1
  35. package/interpretador/depuracao/comum.js +13 -9
  36. package/interpretador/depuracao/comum.js.map +1 -1
  37. package/package.json +1 -1
  38. package/umd/delegua.js +860 -351
package/bin/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@designliquido/delegua",
3
- "version": "0.65.0",
3
+ "version": "0.66.0",
4
4
  "description": "Linguagem de programação simples e moderna usando português estruturado.",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -0,0 +1,55 @@
1
+ import { Declaracao } from '../declaracoes';
2
+ import { EstilizadorComumInterface, RegraEstilizacao, ViolacaoEstilo } from '../interfaces/estilizador-comum-interface';
3
+ /**
4
+ * Estilizador de código para Delégua.
5
+ * Aplica transformações no AST para enforcar convenções e melhorar qualidade do código.
6
+ */
7
+ export declare class EstilizadorDelegua implements EstilizadorComumInterface {
8
+ regras: RegraEstilizacao[];
9
+ private violacoes;
10
+ private modoValidacao;
11
+ constructor(regras?: RegraEstilizacao[]);
12
+ adicionarRegra(regra: RegraEstilizacao): void;
13
+ removerRegra(nomeRegra: string): void;
14
+ /**
15
+ * Aplica as regras de estilização recursivamente em uma declaração.
16
+ * @param declaracao A declaração a ser estilizada.
17
+ * @returns A declaração estilizada.
18
+ */
19
+ private estilizarDeclaracao;
20
+ /**
21
+ * Verifica se uma declaração foi modificada comparando propriedades relevantes.
22
+ */
23
+ private declaracaoFoiModificada;
24
+ /**
25
+ * Clona uma declaração de forma superficial.
26
+ */
27
+ private clonarDeclaracao;
28
+ /**
29
+ * Estiliza construtos dentro de uma declaração.
30
+ * @param declaracao A declaração cujos campos serão estilizados.
31
+ */
32
+ private estilizarCamposDeclaracao;
33
+ /**
34
+ * Aplica as regras de estilização em um construto.
35
+ * @param construto O construto a ser estilizado.
36
+ * @returns O construto estilizado.
37
+ */
38
+ private estilizarConstruto;
39
+ /**
40
+ * Estiliza campos dentro de um construto.
41
+ * @param construto O construto cujos campos serão estilizados.
42
+ */
43
+ private estilizarCamposConstruto;
44
+ /**
45
+ * Verifica se um objeto é uma Declaração.
46
+ */
47
+ private ehDeclaracao;
48
+ /**
49
+ * Verifica se um objeto é um Construto.
50
+ */
51
+ private ehConstruto;
52
+ estilizar(declaracoes: Declaracao[]): Declaracao[];
53
+ validar(declaracoes: Declaracao[]): ViolacaoEstilo[];
54
+ }
55
+ //# sourceMappingURL=estilizador-delegua.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"estilizador-delegua.d.ts","sourceRoot":"","sources":["../../fontes/estilizador/estilizador-delegua.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EACH,yBAAyB,EACzB,gBAAgB,EAChB,cAAc,EACjB,MAAM,2CAA2C,CAAC;AAEnD;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,yBAAyB;IAChE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,aAAa,CAAU;gBAEnB,MAAM,GAAE,gBAAgB,EAAO;IAM3C,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAI7C,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIrC;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAoC3B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAqB/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAuBxB;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IA2BjC;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAgC1B;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IA0BhC;;OAEG;IACH,OAAO,CAAC,YAAY;IAIpB;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB,SAAS,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE;IAalD,OAAO,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,cAAc,EAAE;CAevD"}
@@ -0,0 +1,228 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EstilizadorDelegua = void 0;
4
+ /**
5
+ * Estilizador de código para Delégua.
6
+ * Aplica transformações no AST para enforcar convenções e melhorar qualidade do código.
7
+ */
8
+ class EstilizadorDelegua {
9
+ constructor(regras = []) {
10
+ this.regras = regras;
11
+ this.violacoes = [];
12
+ this.modoValidacao = false;
13
+ }
14
+ adicionarRegra(regra) {
15
+ this.regras.push(regra);
16
+ }
17
+ removerRegra(nomeRegra) {
18
+ this.regras = this.regras.filter((r) => r.nome !== nomeRegra);
19
+ }
20
+ /**
21
+ * Aplica as regras de estilização recursivamente em uma declaração.
22
+ * @param declaracao A declaração a ser estilizada.
23
+ * @returns A declaração estilizada.
24
+ */
25
+ estilizarDeclaracao(declaracao) {
26
+ let declaracaoAtual = declaracao;
27
+ // Aplica regras de declaração
28
+ for (const regra of this.regras) {
29
+ if (regra.aplicarEmDeclaracao) {
30
+ if (this.modoValidacao) {
31
+ // Em modo validação, clona a declaração antes de aplicar
32
+ const declaracaoClonada = this.clonarDeclaracao(declaracaoAtual);
33
+ const declaracaoModificada = regra.aplicarEmDeclaracao(declaracaoClonada);
34
+ // Verifica se houve mudança
35
+ if (this.declaracaoFoiModificada(declaracaoAtual, declaracaoModificada)) {
36
+ this.violacoes.push({
37
+ regra: regra.nome,
38
+ mensagem: `${regra.descricao}`,
39
+ linha: declaracao.linha,
40
+ hashArquivo: declaracao.hashArquivo,
41
+ severidade: 'aviso',
42
+ });
43
+ }
44
+ }
45
+ else {
46
+ // Em modo normal, aplica a transformação
47
+ declaracaoAtual = regra.aplicarEmDeclaracao(declaracaoAtual);
48
+ }
49
+ }
50
+ }
51
+ // Recursivamente estiliza construtos dentro da declaração
52
+ if (!this.modoValidacao) {
53
+ this.estilizarCamposDeclaracao(declaracaoAtual);
54
+ }
55
+ return declaracaoAtual;
56
+ }
57
+ /**
58
+ * Verifica se uma declaração foi modificada comparando propriedades relevantes.
59
+ */
60
+ declaracaoFoiModificada(original, modificada) {
61
+ // Compara lexema do símbolo (para nomes)
62
+ if (original.simbolo && modificada.simbolo) {
63
+ if (original.simbolo.lexema !== modificada.simbolo.lexema) {
64
+ return true;
65
+ }
66
+ }
67
+ // Compara tipo
68
+ if (original.tipo !== modificada.tipo) {
69
+ return true;
70
+ }
71
+ // Compara tipoExplicito
72
+ if (original.tipoExplicito !== modificada.tipoExplicito) {
73
+ return true;
74
+ }
75
+ return false;
76
+ }
77
+ /**
78
+ * Clona uma declaração de forma superficial.
79
+ */
80
+ clonarDeclaracao(declaracao) {
81
+ // Cria um novo objeto com o mesmo protótipo
82
+ const clone = Object.create(Object.getPrototypeOf(declaracao));
83
+ // Copia todas as propriedades
84
+ for (const chave in declaracao) {
85
+ if (declaracao.hasOwnProperty(chave)) {
86
+ // Para objetos aninhados, clona também
87
+ if (typeof declaracao[chave] === 'object' && declaracao[chave] !== null) {
88
+ if (Array.isArray(declaracao[chave])) {
89
+ clone[chave] = [...declaracao[chave]];
90
+ }
91
+ else {
92
+ clone[chave] = Object.assign({}, declaracao[chave]);
93
+ }
94
+ }
95
+ else {
96
+ clone[chave] = declaracao[chave];
97
+ }
98
+ }
99
+ }
100
+ return clone;
101
+ }
102
+ /**
103
+ * Estiliza construtos dentro de uma declaração.
104
+ * @param declaracao A declaração cujos campos serão estilizados.
105
+ */
106
+ estilizarCamposDeclaracao(declaracao) {
107
+ // Itera sobre as propriedades da declaração
108
+ for (const chave in declaracao) {
109
+ if (!declaracao.hasOwnProperty(chave))
110
+ continue;
111
+ const valor = declaracao[chave];
112
+ // Se é um construto, estiliza
113
+ if (valor && typeof valor === 'object' && 'aceitar' in valor) {
114
+ if (this.ehConstruto(valor)) {
115
+ declaracao[chave] = this.estilizarConstruto(valor);
116
+ }
117
+ }
118
+ // Se é um array, estiliza cada elemento
119
+ if (Array.isArray(valor)) {
120
+ for (let i = 0; i < valor.length; i++) {
121
+ if (this.ehDeclaracao(valor[i])) {
122
+ valor[i] = this.estilizarDeclaracao(valor[i]);
123
+ }
124
+ else if (this.ehConstruto(valor[i])) {
125
+ valor[i] = this.estilizarConstruto(valor[i]);
126
+ }
127
+ }
128
+ }
129
+ }
130
+ }
131
+ /**
132
+ * Aplica as regras de estilização em um construto.
133
+ * @param construto O construto a ser estilizado.
134
+ * @returns O construto estilizado.
135
+ */
136
+ estilizarConstruto(construto) {
137
+ let construtoAtual = construto;
138
+ // Aplica regras de construto
139
+ for (const regra of this.regras) {
140
+ if (regra.aplicarEmConstruto) {
141
+ if (this.modoValidacao) {
142
+ // Em modo validação, não modifica, apenas verifica
143
+ const construtoOriginal = JSON.stringify(construtoAtual);
144
+ const construtoModificado = regra.aplicarEmConstruto(construtoAtual);
145
+ if (JSON.stringify(construtoModificado) !== construtoOriginal) {
146
+ this.violacoes.push({
147
+ regra: regra.nome,
148
+ mensagem: `${regra.descricao} não foi aplicada`,
149
+ linha: construto.linha || 0,
150
+ hashArquivo: -1,
151
+ severidade: 'aviso',
152
+ });
153
+ }
154
+ }
155
+ else {
156
+ construtoAtual = regra.aplicarEmConstruto(construtoAtual);
157
+ }
158
+ }
159
+ }
160
+ // Recursivamente estiliza campos do construto
161
+ this.estilizarCamposConstruto(construtoAtual);
162
+ return construtoAtual;
163
+ }
164
+ /**
165
+ * Estiliza campos dentro de um construto.
166
+ * @param construto O construto cujos campos serão estilizados.
167
+ */
168
+ estilizarCamposConstruto(construto) {
169
+ for (const chave in construto) {
170
+ if (!construto.hasOwnProperty(chave))
171
+ continue;
172
+ const valor = construto[chave];
173
+ if (valor && typeof valor === 'object' && 'aceitar' in valor) {
174
+ if (this.ehConstruto(valor)) {
175
+ construto[chave] = this.estilizarConstruto(valor);
176
+ }
177
+ else if (this.ehDeclaracao(valor)) {
178
+ construto[chave] = this.estilizarDeclaracao(valor);
179
+ }
180
+ }
181
+ if (Array.isArray(valor)) {
182
+ for (let i = 0; i < valor.length; i++) {
183
+ if (this.ehDeclaracao(valor[i])) {
184
+ valor[i] = this.estilizarDeclaracao(valor[i]);
185
+ }
186
+ else if (this.ehConstruto(valor[i])) {
187
+ valor[i] = this.estilizarConstruto(valor[i]);
188
+ }
189
+ }
190
+ }
191
+ }
192
+ }
193
+ /**
194
+ * Verifica se um objeto é uma Declaração.
195
+ */
196
+ ehDeclaracao(obj) {
197
+ return obj && typeof obj === 'object' && 'paraTexto' in obj && 'linha' in obj && 'hashArquivo' in obj;
198
+ }
199
+ /**
200
+ * Verifica se um objeto é um Construto.
201
+ */
202
+ ehConstruto(obj) {
203
+ return obj && typeof obj === 'object' && 'aceitar' in obj && !('paraTexto' in obj);
204
+ }
205
+ estilizar(declaracoes) {
206
+ this.modoValidacao = false;
207
+ this.violacoes = [];
208
+ const declaracoesEstilizadas = [];
209
+ for (const declaracao of declaracoes) {
210
+ declaracoesEstilizadas.push(this.estilizarDeclaracao(declaracao));
211
+ }
212
+ return declaracoesEstilizadas;
213
+ }
214
+ validar(declaracoes) {
215
+ this.modoValidacao = true;
216
+ this.violacoes = [];
217
+ // Aplica estilização em modo validação (não modifica, apenas detecta violações)
218
+ for (const declaracao of declaracoes) {
219
+ this.estilizarDeclaracao(declaracao);
220
+ }
221
+ const violacoesEncontradas = [...this.violacoes];
222
+ this.violacoes = [];
223
+ this.modoValidacao = false;
224
+ return violacoesEncontradas;
225
+ }
226
+ }
227
+ exports.EstilizadorDelegua = EstilizadorDelegua;
228
+ //# sourceMappingURL=estilizador-delegua.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"estilizador-delegua.js","sourceRoot":"","sources":["../../fontes/estilizador/estilizador-delegua.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './estilizador-delegua';
2
+ export * from './regras';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../fontes/estilizador/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,UAAU,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./estilizador-delegua"), exports);
18
+ __exportStar(require("./regras"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../fontes/estilizador/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,2CAAyB"}
@@ -0,0 +1,79 @@
1
+ import { Declaracao } from '../../declaracoes';
2
+ import { RegraEstilizacao } from '../../interfaces/estilizador-comum-interface';
3
+ /**
4
+ * Opções de convenção de nomenclatura.
5
+ */
6
+ export interface OpcoesConvencaoNomenclatura {
7
+ /**
8
+ * Convenção para variáveis.
9
+ * - 'caixaCamelo': primeiraPalavraMinuscula
10
+ * - 'caixa_cobra': primeira_palavra_minuscula
11
+ * - 'CaixaPascal': PrimeiraPalavraMaiuscula
12
+ */
13
+ variavel?: 'caixaCamelo' | 'caixa_cobra' | 'CaixaPascal';
14
+ /**
15
+ * Convenção para constantes.
16
+ * - 'CAIXA_ALTA': TODAS_MAIUSCULAS
17
+ * - 'caixaCamelo': primeiraPalavraMinuscula
18
+ */
19
+ constante?: 'CAIXA_ALTA' | 'caixaCamelo';
20
+ /**
21
+ * Convenção para funções.
22
+ * - 'caixaCamelo': primeiraPalavraMinuscula
23
+ * - 'caixa_cobra': primeira_palavra_minuscula
24
+ * - 'CaixaPascal': PrimeiraPalavraMaiuscula
25
+ */
26
+ funcao?: 'caixaCamelo' | 'caixa_cobra' | 'CaixaPascal';
27
+ }
28
+ /**
29
+ * Regra que enforça convenções de nomenclatura.
30
+ *
31
+ * Exemplos:
32
+ * - Variáveis em caixaCamelo: `var meuNome` (não `var MeuNome` ou `var meu_nome`)
33
+ * - Constantes em CAIXA_ALTA: `constante PI_VALOR` (não `constante piValor`)
34
+ * - Funções em caixaCamelo: `função calcularTotal()` (não `função CalcularTotal()`)
35
+ */
36
+ export declare class RegraConvencaoNomenclatura implements RegraEstilizacao {
37
+ nome: string;
38
+ descricao: string;
39
+ private opcoes;
40
+ constructor(opcoes?: OpcoesConvencaoNomenclatura);
41
+ aplicarEmDeclaracao(declaracao: Declaracao): Declaracao;
42
+ /**
43
+ * Aplica convenção em declaração Var.
44
+ */
45
+ private aplicarConvencaoVar;
46
+ /**
47
+ * Aplica convenção em declaração Const.
48
+ */
49
+ private aplicarConvencaoConst;
50
+ /**
51
+ * Aplica convenção em declaração de Função.
52
+ */
53
+ private aplicarConvencaoFuncao;
54
+ /**
55
+ * Converte um nome para a convenção especificada.
56
+ */
57
+ private converterNome;
58
+ /**
59
+ * Converte nome para camelCase.
60
+ */
61
+ private paraCamelCase;
62
+ /**
63
+ * Converte nome para snake_case.
64
+ */
65
+ private paraSnakeCase;
66
+ /**
67
+ * Converte nome para PascalCase.
68
+ */
69
+ private paraPascalCase;
70
+ /**
71
+ * Converte nome para UPPER_CASE.
72
+ */
73
+ private paraUpperCase;
74
+ /**
75
+ * Valida se um nome está na convenção especificada.
76
+ */
77
+ validarNome(nome: string, convencao: string): boolean;
78
+ }
79
+ //# sourceMappingURL=convencao-nomenclatura.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convencao-nomenclatura.d.ts","sourceRoot":"","sources":["../../../fontes/estilizador/regras/convencao-nomenclatura.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAEhF;;GAEG;AACH,MAAM,WAAW,2BAA2B;IACxC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,aAAa,GAAG,aAAa,GAAG,aAAa,CAAC;IAEzD;;;;OAIG;IACH,SAAS,CAAC,EAAE,YAAY,GAAG,aAAa,CAAC;IAEzC;;;;;OAKG;IACH,MAAM,CAAC,EAAE,aAAa,GAAG,aAAa,GAAG,aAAa,CAAC;CAC1D;AAED;;;;;;;GAOG;AACH,qBAAa,0BAA2B,YAAW,gBAAgB;IAC/D,IAAI,SAA4B;IAChC,SAAS,SAA6E;IAEtF,OAAO,CAAC,MAAM,CAA8B;gBAEhC,MAAM,GAAE,2BAAgC;IAQpD,mBAAmB,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU;IAmBvD;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAa3B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAa7B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAa9B;;OAEG;IACH,OAAO,CAAC,aAAa;IAerB;;OAEG;IACH,OAAO,CAAC,aAAa;IAsBrB;;OAEG;IACH,OAAO,CAAC,aAAa;IAarB;;OAEG;IACH,OAAO,CAAC,cAAc;IAKtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;CAGxD"}
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RegraConvencaoNomenclatura = void 0;
4
+ const declaracoes_1 = require("../../declaracoes");
5
+ /**
6
+ * Regra que enforça convenções de nomenclatura.
7
+ *
8
+ * Exemplos:
9
+ * - Variáveis em caixaCamelo: `var meuNome` (não `var MeuNome` ou `var meu_nome`)
10
+ * - Constantes em CAIXA_ALTA: `constante PI_VALOR` (não `constante piValor`)
11
+ * - Funções em caixaCamelo: `função calcularTotal()` (não `função CalcularTotal()`)
12
+ */
13
+ class RegraConvencaoNomenclatura {
14
+ constructor(opcoes = {}) {
15
+ this.nome = 'convencao-nomenclatura';
16
+ this.descricao = 'Enforça convenções de nomenclatura para variáveis, constantes e funções';
17
+ this.opcoes = {
18
+ variavel: opcoes.variavel || 'caixaCamelo',
19
+ constante: opcoes.constante || 'CAIXA_ALTA',
20
+ funcao: opcoes.funcao || 'caixaCamelo',
21
+ };
22
+ }
23
+ aplicarEmDeclaracao(declaracao) {
24
+ // Valida/transforma nomes de variáveis
25
+ if (declaracao instanceof declaracoes_1.Var) {
26
+ return this.aplicarConvencaoVar(declaracao);
27
+ }
28
+ // Valida/transforma nomes de constantes
29
+ if (declaracao instanceof declaracoes_1.Const) {
30
+ return this.aplicarConvencaoConst(declaracao);
31
+ }
32
+ // Valida/transforma nomes de funções
33
+ if (declaracao instanceof declaracoes_1.FuncaoDeclaracao) {
34
+ return this.aplicarConvencaoFuncao(declaracao);
35
+ }
36
+ return declaracao;
37
+ }
38
+ /**
39
+ * Aplica convenção em declaração Var.
40
+ */
41
+ aplicarConvencaoVar(declaracao) {
42
+ if (!this.opcoes.variavel)
43
+ return declaracao;
44
+ const nomeAtual = declaracao.simbolo.lexema;
45
+ const nomeConvertido = this.converterNome(nomeAtual, this.opcoes.variavel);
46
+ if (nomeAtual !== nomeConvertido) {
47
+ declaracao.simbolo.lexema = nomeConvertido;
48
+ }
49
+ return declaracao;
50
+ }
51
+ /**
52
+ * Aplica convenção em declaração Const.
53
+ */
54
+ aplicarConvencaoConst(declaracao) {
55
+ if (!this.opcoes.constante)
56
+ return declaracao;
57
+ const nomeAtual = declaracao.simbolo.lexema;
58
+ const nomeConvertido = this.converterNome(nomeAtual, this.opcoes.constante);
59
+ if (nomeAtual !== nomeConvertido) {
60
+ declaracao.simbolo.lexema = nomeConvertido;
61
+ }
62
+ return declaracao;
63
+ }
64
+ /**
65
+ * Aplica convenção em declaração de Função.
66
+ */
67
+ aplicarConvencaoFuncao(declaracao) {
68
+ if (!this.opcoes.funcao)
69
+ return declaracao;
70
+ const nomeAtual = declaracao.simbolo.lexema;
71
+ const nomeConvertido = this.converterNome(nomeAtual, this.opcoes.funcao);
72
+ if (nomeAtual !== nomeConvertido) {
73
+ declaracao.simbolo.lexema = nomeConvertido;
74
+ }
75
+ return declaracao;
76
+ }
77
+ /**
78
+ * Converte um nome para a convenção especificada.
79
+ */
80
+ converterNome(nome, convencao) {
81
+ switch (convencao) {
82
+ case 'caixaCamelo':
83
+ return this.paraCamelCase(nome);
84
+ case 'caixa_cobra':
85
+ return this.paraSnakeCase(nome);
86
+ case 'CaixaPascal':
87
+ return this.paraPascalCase(nome);
88
+ case 'CAIXA_ALTA':
89
+ return this.paraUpperCase(nome);
90
+ default:
91
+ return nome;
92
+ }
93
+ }
94
+ /**
95
+ * Converte nome para camelCase.
96
+ */
97
+ paraCamelCase(nome) {
98
+ // Se tem underscores, divide por eles
99
+ if (nome.includes('_')) {
100
+ const palavras = nome.split(/[_\s]+/);
101
+ return (palavras[0].toLowerCase() +
102
+ palavras
103
+ .slice(1)
104
+ .map((p) => p.charAt(0).toUpperCase() + p.slice(1).toLowerCase())
105
+ .join(''));
106
+ }
107
+ // Se está em PascalCase, converte para camelCase
108
+ if (nome.charAt(0) === nome.charAt(0).toUpperCase()) {
109
+ return nome.charAt(0).toLowerCase() + nome.slice(1);
110
+ }
111
+ // Já está em camelCase
112
+ return nome;
113
+ }
114
+ /**
115
+ * Converte nome para snake_case.
116
+ */
117
+ paraSnakeCase(nome) {
118
+ return (nome
119
+ // Adiciona underscore antes de letras maiúsculas
120
+ .replace(/([A-Z])/g, '_$1')
121
+ .toLowerCase()
122
+ // Remove underscores duplicados
123
+ .replace(/__+/g, '_')
124
+ // Remove underscore inicial se houver
125
+ .replace(/^_/, ''));
126
+ }
127
+ /**
128
+ * Converte nome para PascalCase.
129
+ */
130
+ paraPascalCase(nome) {
131
+ const palavras = nome.split(/[_\s]+/);
132
+ return palavras.map((p) => p.charAt(0).toUpperCase() + p.slice(1).toLowerCase()).join('');
133
+ }
134
+ /**
135
+ * Converte nome para UPPER_CASE.
136
+ */
137
+ paraUpperCase(nome) {
138
+ return this.paraSnakeCase(nome).toUpperCase();
139
+ }
140
+ /**
141
+ * Valida se um nome está na convenção especificada.
142
+ */
143
+ validarNome(nome, convencao) {
144
+ return nome === this.converterNome(nome, convencao);
145
+ }
146
+ }
147
+ exports.RegraConvencaoNomenclatura = RegraConvencaoNomenclatura;
148
+ //# sourceMappingURL=convencao-nomenclatura.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convencao-nomenclatura.js","sourceRoot":"","sources":["../../../fontes/estilizador/regras/convencao-nomenclatura.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { Declaracao } from '../../declaracoes';
2
+ import { RegraEstilizacao } from '../../interfaces/estilizador-comum-interface';
3
+ /**
4
+ * Regra que fortalece tipos, convertendo `qualquer` para tipos inferidos.
5
+ *
6
+ * Exemplos:
7
+ * - `var x = 5` com tipo `qualquer` → `var x: número = 5`
8
+ * - `var nomes = []` com tipo `qualquer` → `var nomes: vetor = []`
9
+ * - `constante PI = 3.14` com tipo `qualquer` → `constante PI: número = 3.14`
10
+ */
11
+ export declare class RegraFortalecerTipos implements RegraEstilizacao {
12
+ nome: string;
13
+ descricao: string;
14
+ aplicarEmDeclaracao(declaracao: Declaracao): Declaracao;
15
+ /**
16
+ * Fortalece o tipo de uma declaração Var.
17
+ */
18
+ private fortalecerTipoVar;
19
+ /**
20
+ * Fortalece o tipo de uma declaração Const.
21
+ */
22
+ private fortalecerTipoConst;
23
+ /**
24
+ * Infere o tipo de um construto.
25
+ */
26
+ private inferirTipoDeConstruto;
27
+ }
28
+ //# sourceMappingURL=fortalecer-tipos.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fortalecer-tipos.d.ts","sourceRoot":"","sources":["../../../fontes/estilizador/regras/fortalecer-tipos.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAGhF;;;;;;;GAOG;AACH,qBAAa,oBAAqB,YAAW,gBAAgB;IACzD,IAAI,SAAsB;IAC1B,SAAS,SAAoE;IAE7E,mBAAmB,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU;IAcvD;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAmBzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAmB3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;CAcjC"}