1234567891011121314151617181920 |
- import { isConstantNode, isFunctionNode, isOperatorNode, isParenthesisNode } from '../../../utils/is.js';
- export { isConstantNode, isSymbolNode as isVariableNode } from '../../../utils/is.js';
- export function isNumericNode(x) {
- return isConstantNode(x) || isOperatorNode(x) && x.isUnary() && isConstantNode(x.args[0]);
- }
- export function isConstantExpression(x) {
- if (isConstantNode(x)) {
- // Basic Constant types
- return true;
- }
- if ((isFunctionNode(x) || isOperatorNode(x)) && x.args.every(isConstantExpression)) {
- // Can be constant depending on arguments
- return true;
- }
- if (isParenthesisNode(x) && isConstantExpression(x.content)) {
- // Parenthesis are transparent
- return true;
- }
- return false; // Probably missing some edge cases
- }
|