UNPKG

@designliquido/delegua

Version:

Linguagem de programação simples e moderna usando português estruturado.

50 lines 1.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RegraExplicitarTiposParametros = void 0; /** * Regra que explicita o tipo `qualquer` em parâmetros sem anotação. */ class RegraExplicitarTiposParametros { constructor() { this.nome = 'explicitar-tipos-parametros'; this.descricao = 'Explicita o tipo `qualquer` em parâmetros sem tipo declarado'; } aplicarEmDeclaracao(declaracao) { this.visitarObjeto(declaracao, new Set()); return declaracao; } aplicarEmConstruto(construto) { this.visitarObjeto(construto, new Set()); return construto; } visitarObjeto(objeto, visitados) { if (!objeto || typeof objeto !== 'object' || visitados.has(objeto)) { return; } visitados.add(objeto); if (Array.isArray(objeto)) { for (const item of objeto) { this.visitarObjeto(item, visitados); } return; } if (this.ehAssinaturaComParametros(objeto)) { this.explicitarParametros(objeto.parametros); } for (const valor of Object.values(objeto)) { this.visitarObjeto(valor, visitados); } } ehAssinaturaComParametros(objeto) { return 'parametros' in objeto && Array.isArray(objeto.parametros); } explicitarParametros(parametros) { for (const parametro of parametros) { if (!parametro.tipoDado) { parametro.tipoDado = 'qualquer'; } } } } exports.RegraExplicitarTiposParametros = RegraExplicitarTiposParametros; //# sourceMappingURL=regra-explicitar-tipos-parametros.js.map