@designliquido/delegua
Version:
Linguagem de programação simples e moderna usando português estruturado.
50 lines • 1.71 kB
JavaScript
;
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