import { make, simple } from "acorn/walk";
import { error } from "../../deno_ral/log.ts";
import { InternalError } from "../../core/lib/error.ts";
const walkerBase = make({
Import() {},
ViewExpression(node: any, st: any, c: any) {
c(node.id, st, "Identifier");
},
MutableExpression(node: any, st: any, c: any) {
c(node.id, st, "Identifier");
},
Cell(node: any, st: any, c: any) {
c(node.body, st);
},
Program(node: any, st: any, c: any) {
if (node.body) {
for (let i = 0, list = node.body; i < list.length; i += 1) {
const stmt = list[i];
c(stmt, st, "Statement");
}
} else if (node.cells) {
for (let i = 0, list = node.cells; i < list.length; i += 1) {
const stmt = list[i];
c(stmt, st);
}
} else {
error("I don't know how to walk this node", node);
throw new InternalError(
`OJS traversal: I don't know how to walk this node: ${node}`,
);
}
},
});
export function ojsSimpleWalker(parse: any, visitor: any) {
simple(parse, visitor, walkerBase);
}