16 lines
1.0 KiB
JavaScript
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");
|