Files
bitburner-src/tools/bundle-doc/generate-math-notation-output.mjs

47 lines
1.4 KiB
JavaScript

import { readFileSync, writeFileSync } from "node:fs";
import { dirname, resolve } from "node:path";
import { fileURLToPath } from "node:url";
import remarkMath from "remark-math";
import remarkParse from "remark-parse";
import remarkRehype from "remark-rehype";
import { unified } from "unified";
import { createPlugin } from "../../src/ThirdParty/RehypePlugin.mjs";
import { convertToMML, walkDir } from "./utils.mjs";
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const data = {};
const parser = unified().use(remarkParse).use(remarkMath);
const tool = unified()
.use(remarkRehype)
.use(
createPlugin(function () {
return {
render(value) {
data[value] = convertToMML(value);
return [];
},
};
}),
);
function processDir(dir) {
walkDir(dir, (filePath) => {
tool.runSync(parser.parse(readFileSync(filePath)));
});
}
processDir(resolve(__dirname, "../../src/Documentation/doc/en"));
const notationInput = JSON.parse(readFileSync(resolve(__dirname, "../../src/Documentation/data/MathNotation.json")));
for (const value of Object.values(notationInput)) {
data[value] = convertToMML(value);
}
console.log(`Generated MathML data for ${Object.keys(data).length} notation entries`);
writeFileSync(resolve(__dirname, "../../src/Documentation/data/MathNotationOutput.json"), JSON.stringify(data), {
encoding: "utf-8",
});