UNPKG

@designliquido/foles

Version:

Linguagem de folhas de estilo para documentos em geral em português

64 lines 2.72 kB
"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