Files

16 lines
1.0 KiB
JavaScript

// Round-trip probe: markdown -> ProseMirror doc (prosemirror-markdown default parser) -> markdown (default serializer).
// usage: node rt.mjs <pm-markdown-dist-index.js> <outfile.json> <file>...
import { readFileSync, writeFileSync } from "node:fs";
import { pathToFileURL } from "node:url";
const [, , lib, outFile, ...files] = process.argv;
const { defaultMarkdownParser: P, defaultMarkdownSerializer: S } = await import(pathToFileURL(lib).href);
const rows = [];
for (const f of files) {
const src = readFileSync(f, "utf8");
let once, twice, err = null;
try { once = S.serialize(P.parse(src)); twice = S.serialize(P.parse(once)); } catch (e) { err = String(e); }
rows.push({ file: f, bytes: src.length, identical: once === src, fixedPoint: once === twice, err, once });
}
writeFileSync(outFile, JSON.stringify(rows));
console.log(rows.filter(r => r.identical).length + " identical of " + rows.length + "; " + rows.filter(r => r.fixedPoint).length + " fixed points; " + rows.filter(r => r.err).length + " errors");