@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
36 lines (35 loc) • 1.01 kB
JavaScript
;
const ARGUMENTS_SEPARATOR = ", ";
import { BaseTraverser } from "./_Base";
export class ExpressionStringGenerator extends BaseTraverser {
constructor(param) {
super(param);
this.param = param;
}
parseTree(parsedTree) {
const node = parsedTree.node();
if (parsedTree.errorMessage() == null && node) {
try {
return this.traverse_node(node);
} catch (e) {
this.setError("could not traverse tree");
}
} else {
this.setError("cannot parse tree");
}
}
traverse_CallExpression(node) {
const methodArguments = node.arguments.map((arg) => {
return this.traverse_node(arg);
});
const argumentsJoined = `${methodArguments.join(ARGUMENTS_SEPARATOR)}`;
const methodName = node.callee.name;
return `${methodName}(${argumentsJoined})`;
}
traverse_UnaryExpression(node) {
return `${node.operator}${this.traverse_node(node.argument)}`;
}
traverse_Identifier(node) {
return `${node.name}`;
}
}