@designliquido/foles
Version:
Linguagem de folhas de estilo para documentos em geral em português
64 lines • 2.72 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.TradutorReverso = void 0;
const declaracoes_1 = require("../declaracoes");
const seletor_estruturas_html_1 = require("../estruturas/seletor-estruturas-html");
const superclasse_1 = require("../modificadores/superclasse");
const seletores_1 = require("../seletores");
class TradutorReverso {
constructor() {
this.linha = 1;
this.atual = 1;
}
calcularPragmasModificador(modificador) {
const novosPragmasModificador = {
linha: this.linha,
colunaInicial: this.atual,
colunaFinal: this.atual,
};
this.atual += modificador.propriedadeCss.length;
novosPragmasModificador.colunaFinal = this.atual;
return novosPragmasModificador;
}
calcularPragmasSeletor(traducaoSeletor) {
const novosPragmasSeletor = {
linha: this.linha,
colunaInicial: this.atual,
colunaFinal: this.atual,
};
this.atual += traducaoSeletor.length;
novosPragmasSeletor.colunaFinal = this.atual;
return novosPragmasSeletor;
}
traduzirSeletorEstrutura(seletor) {
const estruturaHtml = seletor.estrutura.tagHtml;
const novosPragmasSeletor = this.calcularPragmasSeletor(estruturaHtml);
return new seletor_estruturas_html_1.SeletorEstruturasHtml(estruturaHtml, novosPragmasSeletor);
}
traduzir(declaracoes) {
this.linha = 1;
this.atual = 1;
const declaracoesTraduzidas = [];
for (const declaracao of declaracoes) {
const seletoresTraduzidos = [];
const modificadoresTraduzidos = [];
for (const seletor of declaracao.seletores) {
this.linha = seletor.pragmas.linha;
if (seletor instanceof seletores_1.SeletorEstrutura) {
seletoresTraduzidos.push(this.traduzirSeletorEstrutura(seletor));
continue;
}
}
for (const modificador of declaracao.modificadores) {
this.linha = modificador.pragmas.linha;
modificadoresTraduzidos.push(new superclasse_1.SeletorModificador(Array.isArray(modificador.nomeFoles)
? modificador.nomeFoles[0]
: modificador.nomeFoles, modificador.valores, this.calcularPragmasModificador(modificador)));
}
declaracoesTraduzidas.push(new declaracoes_1.BlocoDeclaracao(seletoresTraduzidos, modificadoresTraduzidos, []));
}
return declaracoesTraduzidas;
}
}
exports.TradutorReverso = TradutorReverso;
//# sourceMappingURL=tradutor-reverso.js.map