@designliquido/foles
Version:
Linguagem de folhas de estilo para documentos em geral em português
84 lines • 3.85 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 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 = String(seletor.estrutura.constructor.name).toLowerCase();
const traducaoSeletor = estruturas_html_1.default[seletorLmht];
const novosPragmasSeletor = this.calcularPragmasSeletor(traducaoSeletor);
const estruturaTraduzida = new seletor_estruturas_html_1.SeletorEstruturasHtml(traducaoSeletor, seletor.pragmas);
const seletorTraduzido = new seletores_1.SeletorEstrutura(estruturaTraduzida, seletor.pseudoclasse);
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.valores, modificador.pragmas, modificador.variavel);
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;
}
seletoresTraduzidos.push(seletor);
}
for (const modificador of declaracao.modificadores) {
modificadoresTraduzidos.push(this.traduzirModificador(modificador));
}
declaracoesTraduzidas.push(new declaracoes_1.BlocoDeclaracao(seletoresTraduzidos, modificadoresTraduzidos, []));
}
else if (declaracao instanceof declaracoes_1.DeclaracaoVariavel) {
declaracoesTraduzidas.push(declaracao);
}
}
return declaracoesTraduzidas;
}
}
exports.Tradutor = Tradutor;
//# sourceMappingURL=tradutor.js.map