waforth/src/tools/preprocess.js

31 lines
687 B
JavaScript
Raw Normal View History

2019-11-08 16:55:34 +01:00
#!/usr/bin/env node
const process = require("process");
const fs = require("fs");
function escapeRegExp(string) {
return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string
}
const file = process.argv[2];
const lines = fs
.readFileSync(file)
.toString()
.split("\n");
const definitions = {};
lines.forEach(line => {
Object.keys(definitions).forEach(k => {
line = line.replace(
new RegExp(escapeRegExp(k) + "(\\s|\\))", "g"),
definitions[k] + " (; = " + k + " ;)$1"
);
});
const m = line.match(/^;; \(define\s+([^\s]+)\s+([^\s]+)\)/);
if (m) {
definitions[m[1]] = m[2];
} else {
console.log(line);
}
});