@designliquido/foles
Version:
Linguagem de folhas de estilo para documentos em geral em português
83 lines • 3.75 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Tradutor = 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");
const metodo_1 = require("../valores/metodos/foles/metodo");
const estruturas_html_1 = __importDefault(require("./estruturas-html"));
class Tradutor {
constructor() {
this.linha = 1;
this.atual = 1;
}
calcularPragmasSeletor(traducaoSeletor) {
const novosPragmasSeletor = {
linha: this.linha,
colunaInicial: this.atual,
colunaFinal: this.atual,
};
this.atual += traducaoSeletor.length;
novosPragmasSeletor.colunaFinal = this.atual - 1;
return novosPragmasSeletor;
}
calcularPragmasModificador(modificador) {
const novosPragmasModificador = {
linha: this.linha,
colunaInicial: this.atual,
colunaFinal: this.atual,
};
this.atual += modificador.propriedadeCss.length;
novosPragmasModificador.colunaFinal = this.atual - 1;
return novosPragmasModificador;
}
traduzirSeletorEstrutura(seletor) {
const seletorLmht = seletor.paraTexto();
const traducaoSeletor = estruturas_html_1.default[seletorLmht];
const novosPragmasSeletor = this.calcularPragmasSeletor(traducaoSeletor);
const seletorTraduzido = new seletor_estruturas_html_1.SeletorEstruturasHtml(traducaoSeletor, seletor.pragmas);
seletorTraduzido.pragmasTraducao = novosPragmasSeletor;
return seletorTraduzido;
}
traduzirModificador(modificador) {
this.linha = modificador.pragmas.linha;
const novosPragmasModificador = this.calcularPragmasModificador(modificador);
const modificadorTraduzido = new superclasse_1.SeletorModificador(Array.isArray(modificador.nomeFoles)
? modificador.nomeFoles[0]
: modificador.nomeFoles, modificador.valor instanceof metodo_1.Metodo
? modificador.valor.paraTexto()
: modificador.valor, modificador.quantificador, modificador.pragmas);
modificadorTraduzido.pragmasTraducao = novosPragmasModificador;
return modificadorTraduzido;
}
traduzir(declaracoes) {
this.linha = 1;
this.atual = 1;
const declaracoesTraduzidas = [];
for (const declaracao of declaracoes) {
const seletoresTraduzidos = [];
const modificadoresTraduzidos = [];
if (declaracao instanceof declaracoes_1.BlocoDeclaracao) {
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) {
modificadoresTraduzidos.push(this.traduzirModificador(modificador));
}
declaracoesTraduzidas.push(new declaracoes_1.BlocoDeclaracao(seletoresTraduzidos, modificadoresTraduzidos, []));
}
// TODO: Adicionar caso if (declaracao instanceof DeclaracaoVariavel)
}
return declaracoesTraduzidas;
}
}
exports.Tradutor = Tradutor;
//# sourceMappingURL=tradutor.js.map