liquido
Version:
Conjunto de ferramentas para desenvolvimento de aplicações para a internet 100% em português
54 lines • 2.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CentroConfiguracoes = void 0;
const configuracao_liquido_1 = require("./configuracao-liquido");
/**
* O centro de configurações. Desdobra o arquivo de configuração e monta
* os objetos de configuração de Liquido.
*/
class CentroConfiguracoes {
constructor(declaracoes) {
this.liquido = new configuracao_liquido_1.ConfiguracaoLiquido();
const entradasConfiguracao = [];
for (const declaracao of declaracoes) {
if (declaracao.constructor.name === 'Comentario') {
continue;
}
const expressao = declaracao.expressao;
const entradaConfiguracao = this.desdobrarConfiguracao(expressao);
entradasConfiguracao.push(entradaConfiguracao);
}
for (const entradaConfiguracao of entradasConfiguracao) {
const caminhoConfiguracao = entradaConfiguracao[0];
const valorConfiguracao = entradaConfiguracao[1];
this[caminhoConfiguracao[0]]
.definirValor(this[caminhoConfiguracao[0]], caminhoConfiguracao, valorConfiguracao);
}
// TODO: Hablitar em modo verboso.
// console.log(this);
}
desdobrarConfiguracao(expressaoDefinirValor) {
const objetoAlvo = expressaoDefinirValor.objeto;
const nomePropriedade = expressaoDefinirValor.nome.lexema;
const informacoesVariavel = expressaoDefinirValor.valor;
let partesNomePropriedade = [objetoAlvo.simbolo.lexema, nomePropriedade];
if (objetoAlvo.objeto) {
partesNomePropriedade = [
...this.desdobrarNomePropriedade(objetoAlvo.objeto),
...partesNomePropriedade
];
}
return [partesNomePropriedade, informacoesVariavel.valor];
}
desdobrarNomePropriedade(objetoExterno) {
if (!objetoExterno.objeto) {
return [objetoExterno.simbolo.lexema];
}
return [
...this.desdobrarNomePropriedade(objetoExterno.objeto),
objetoExterno.simbolo.lexema
];
}
}
exports.CentroConfiguracoes = CentroConfiguracoes;
//# sourceMappingURL=index.js.map