update eaf package
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
const path = require("path");
|
||||
const fs = require("fs");
|
||||
const os = require("os");
|
||||
const http = require("http");
|
||||
const url = require("url");
|
||||
|
||||
const mume = require("@shd101wyy/mume");
|
||||
|
||||
function readFile(file, options) {
|
||||
return new Promise((resolve, reject) => {
|
||||
fs.readFile(file, options, (error, text) => {
|
||||
if (error) {
|
||||
return reject(error.toString());
|
||||
}
|
||||
else {
|
||||
return resolve(text.toString());
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function writeFile(file, text, options) {
|
||||
return new Promise((resolve, reject) => {
|
||||
fs.writeFile(file, text, options, (error) => {
|
||||
if (error) {
|
||||
return reject(error.toString());
|
||||
}
|
||||
else {
|
||||
return resolve();
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
async function render(inputFile, outputFile, darkMode) {
|
||||
const configPath = path.resolve(os.homedir(), ".mume");
|
||||
await mume.init(configPath);
|
||||
|
||||
const engine = new mume.MarkdownEngine({
|
||||
filePath: inputFile,
|
||||
config: {
|
||||
configPath: configPath,
|
||||
previewTheme: darkMode ? "atom-dark.css" : "atom-light.css",
|
||||
mermaidTheme: darkMode ? "mermaid.dark.css" : "mermaid.css",
|
||||
codeBlockTheme: darkMode ? "atom-dark.css" : "atom-light.css",
|
||||
printBackground: true,
|
||||
enableScriptExecution: true,
|
||||
},
|
||||
});
|
||||
|
||||
const inputString = await readFile(inputFile, {
|
||||
encoding: "utf-8",
|
||||
});
|
||||
let html;
|
||||
let yamlConfig;
|
||||
({ html, yamlConfig } = await engine.parseMD(inputString, {
|
||||
useRelativeFilePath: false,
|
||||
hideFrontMatter: true,
|
||||
isForPreview: false,
|
||||
runAllCodeChunks: true,
|
||||
}));
|
||||
html = await engine.generateHTMLTemplateForExport(html, yamlConfig, {
|
||||
isForPrint: false,
|
||||
isForPrince: false,
|
||||
offline: true,
|
||||
embedLocalImages: false,
|
||||
});
|
||||
|
||||
await writeFile(outputFile, html);
|
||||
}
|
||||
|
||||
async function server_handler(req, resp) {
|
||||
const q = url.parse(req.url, true).query;
|
||||
const inputFile = q.input_file;
|
||||
const outputFile = q.output_file;
|
||||
const darkMode = q.dark_mode == "true";
|
||||
|
||||
resp.writeHead(200, {'Content-Type': 'text/plain'});
|
||||
try {
|
||||
await render(inputFile, outputFile, darkMode);
|
||||
resp.end('ok');
|
||||
} catch (err) {
|
||||
resp.end(err.message);
|
||||
}
|
||||
}
|
||||
|
||||
async function main() {
|
||||
const argv = process.argv;
|
||||
const port = Number(argv[2]);
|
||||
http.createServer(server_handler).listen(port);
|
||||
}
|
||||
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user