@designliquido/foles
Version:
Linguagem de folhas de estilo para documentos em geral em português
68 lines • 3.32 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Exportador = void 0;
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const base64_1 = require("../utilidades/base64");
/**
* Classe que exporta traduções em diferentes formatos de arquivos. Como possui dependência
* direta com Node.js, deve ser transferida futuramente para um projeto próprio.
*/
class Exportador {
/**
* A exportação em si. Exporta para o mesmo diretório onde está o arquivo de origem.
* @param formato O formato do arquivo traduzido.
* @param arquivoOrigem O nome do arquivo de origem.
* @param conteudo O conteúdo da tradução.
* @param mapa Um mapa de fontes, se disponível (como string JSON).
* @param inline Se verdadeiro, incorpora o mapa como base64 inline; caso contrário, cria arquivo separado.
*/
exportar(formato, arquivoOrigem, conteudo, mapa, inline = false) {
let nomeArquivoSaida;
let nomeArquivoMapa;
let conteudoCompleto = conteudo;
switch (formato) {
case "css":
nomeArquivoSaida = arquivoOrigem.replace(/\.foles$/, ".css");
if (mapa) {
if (inline) {
// Modo inline: incorpora o mapa como base64
const mapaBase64 = new base64_1.Base64().encode(mapa);
conteudoCompleto += `\n/*# sourceMappingURL=data:application/json;base64,${mapaBase64} */\n`;
}
else {
// Modo separado: cria arquivo .map
nomeArquivoMapa = nomeArquivoSaida + ".map";
fs_1.default.writeFileSync(nomeArquivoMapa, mapa);
conteudoCompleto += `\n/*# sourceMappingURL=${path_1.default.basename(nomeArquivoMapa)} */\n`;
}
}
fs_1.default.writeFileSync(nomeArquivoSaida, conteudoCompleto);
break;
case "foles":
nomeArquivoSaida = arquivoOrigem.replace(/\.css$/, ".foles");
if (mapa) {
if (inline) {
// Modo inline: incorpora o mapa como base64
const mapaBase64 = new base64_1.Base64().encode(mapa);
conteudoCompleto += `\n/*# sourceMappingURL=data:application/json;base64,${mapaBase64} */\n`;
}
else {
// Modo separado: cria arquivo .map
nomeArquivoMapa = nomeArquivoSaida + ".map";
fs_1.default.writeFileSync(nomeArquivoMapa, mapa);
conteudoCompleto += `\n/*# sourceMappingURL=${path_1.default.basename(nomeArquivoMapa)} */\n`;
}
}
fs_1.default.writeFileSync(nomeArquivoSaida, conteudoCompleto);
break;
default:
throw new Error("Formato de arquivo não reconhecido.");
}
}
}
exports.Exportador = Exportador;
//# sourceMappingURL=index.js.map