@designliquido/foles
Version:
Linguagem de folhas de estilo para documentos em geral em português
78 lines • 4.24 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.FolEs = void 0;
const avaliador_sintatico_1 = require("./avaliador-sintatico");
const avaliador_sintatico_reverso_1 = require("./avaliador-sintatico/avaliador-sintatico-reverso");
const lexador_1 = require("./lexador");
const lexador_reverso_1 = require("./lexador/lexador-reverso");
const serializadores_1 = require("./serializadores");
const serializador_reverso_1 = require("./serializadores/serializador-reverso");
const importador_1 = require("./importador");
const tradutor_1 = require("./tradutores/tradutor");
const tradutor_reverso_1 = require("./tradutores/tradutor-reverso");
const base64_1 = require("./utilidades/base64");
const gerador_mapa_1 = require("./gerador-mapa");
/**
* O núcleo da linguagem FolEs.
*/
class FolEs {
constructor(traduzirComAninhamentos) {
this.lexador = new lexador_1.Lexador();
this.lexadorReverso = new lexador_reverso_1.LexadorReverso();
this.importador = new importador_1.Importador(this.lexador);
this.importadorReverso = new importador_1.Importador(this.lexadorReverso);
this.importadorReverso.extensaoPadrao = ".css";
this.avaliadorSintatico = new avaliador_sintatico_1.AvaliadorSintatico(this.importador);
this.avaliadorSintaticoReverso = new avaliador_sintatico_reverso_1.AvaliadorSintaticoReverso(this.importadorReverso);
this.serializador = new serializadores_1.Serializador(traduzirComAninhamentos);
this.serializadorReverso = new serializador_reverso_1.SerializadorReverso(traduzirComAninhamentos);
this.tradutor = new tradutor_1.Tradutor();
this.tradutorReverso = new tradutor_reverso_1.TradutorReverso();
this.geradorMapaCss = new gerador_mapa_1.GeradorMapaCss();
}
/**
* Método comum de conversão de texto FolEs para CSS.
* @param conteudo O conteúdo em FolEs.
* @returns O resultado da tradução em CSS.
*/
converterParaCssInterno(simbolos) {
const resultadoAvaliadorSintatico = this.avaliadorSintatico.analisar(simbolos);
const traducao = this.serializador.serializar(resultadoAvaliadorSintatico);
return traducao;
}
converterParaFolEsInterno(simbolos) {
const resultadoAvaliadorSintaticoReverso = this.avaliadorSintaticoReverso.analisar(simbolos);
const traducaoReversa = this.serializadorReverso.serializar(resultadoAvaliadorSintaticoReverso);
return traducaoReversa;
}
converterParaCss(nomeArquivo) {
const resultadoLexador = this.importador.importar(nomeArquivo, true);
return this.converterParaCssInterno(resultadoLexador[1].simbolos);
}
converterParaCssComMapas(nomeArquivo) {
const resultadoLexador = this.importador.importar(nomeArquivo, true);
const resultadoAvaliadorSintatico = this.avaliadorSintatico.analisar(resultadoLexador[1].simbolos);
const traducao = this.serializador.serializar(resultadoAvaliadorSintatico);
const resultadoTraducao = this.tradutor.traduzir(resultadoAvaliadorSintatico);
const mapa = this.geradorMapaCss.gerarMapaFontes(resultadoTraducao, resultadoLexador[0].join("\n"));
return [traducao, new base64_1.Base64().encode(JSON.stringify(mapa))];
}
converterParaFolEs(nomeArquivo) {
const resultadoLexador = this.importadorReverso.importar(nomeArquivo);
return this.converterParaFolEsInterno(resultadoLexador[1].simbolos);
}
converterTextoParaCss(texto) {
const resultadoLexador = this.lexador.mapear(texto.split("\n"));
return this.converterParaCssInterno(resultadoLexador.simbolos);
}
converterTextoParaFolEs(texto) {
const resultadoLexadorReverso = this.lexadorReverso.mapear(texto.split("\n"));
return this.converterParaFolEsInterno(resultadoLexadorReverso.simbolos);
}
}
exports.FolEs = FolEs;
// const testeFoles = new FolEs(false);
// console.log(testeFoles.converterParaCss('../exemplos/exemplo6.foles'));
// console.log(a.converterParaFolEs('../exemplos/reverso/exemplo-metodos.css'));
// console.log(a.converterParaFolEs('../exemplos/reverso/exemplo-codigo.css'));
//# sourceMappingURL=foles.js.map