wildcards.js 770 B

1234567891011121314151617181920
  1. import { isConstantNode, isFunctionNode, isOperatorNode, isParenthesisNode } from '../../../utils/is.js';
  2. export { isConstantNode, isSymbolNode as isVariableNode } from '../../../utils/is.js';
  3. export function isNumericNode(x) {
  4. return isConstantNode(x) || isOperatorNode(x) && x.isUnary() && isConstantNode(x.args[0]);
  5. }
  6. export function isConstantExpression(x) {
  7. if (isConstantNode(x)) {
  8. // Basic Constant types
  9. return true;
  10. }
  11. if ((isFunctionNode(x) || isOperatorNode(x)) && x.args.every(isConstantExpression)) {
  12. // Can be constant depending on arguments
  13. return true;
  14. }
  15. if (isParenthesisNode(x) && isConstantExpression(x.content)) {
  16. // Parenthesis are transparent
  17. return true;
  18. }
  19. return false; // Probably missing some edge cases
  20. }