UNPKG

mathjs

Version:

Math.js is an extensive math library for JavaScript and Node.js. It features a flexible expression parser and offers an integrated solution to work with numbers, big numbers, complex numbers, units, and matrices.

65 lines (54 loc) 1.71 kB
var Node = require('./Node'), isString = require('../../util/string').isString; /** * @constructor AssignmentNode * @extends {Node} * Define a symbol, like "a = 3.2" * * @param {String} name Symbol name * @param {Node} expr The expression defining the symbol */ function AssignmentNode(name, expr) { if (!(this instanceof AssignmentNode)) { throw new SyntaxError('Constructor must be called with the new operator'); } // validate input if (!isString(name)) throw new TypeError('String expected for parameter "name"'); if (!(expr instanceof Node)) throw new TypeError('Node expected for parameter "expr"'); this.name = name; this.expr = expr; } AssignmentNode.prototype = new Node(); /** * Compile the node to javascript code * @param {Object} defs Object which can be used to define functions * or constants globally available for the compiled * expression * @private */ AssignmentNode.prototype._compile = function (defs) { return 'scope["' + this.name + '"] = ' + this.expr._compile(defs) + ''; }; /** * Find all nodes matching given filter * @param {Object} filter See Node.find for a description of the filter options * @returns {Node[]} nodes */ AssignmentNode.prototype.find = function (filter) { var nodes = []; // check itself if (this.match(filter)) { nodes.push(this); } // search in expression nodes = nodes.concat(this.expr.find(filter)); return nodes; }; /** * Get string representation * @return {String} */ AssignmentNode.prototype.toString = function() { return this.name + ' = ' + this.expr.toString(); }; module.exports = AssignmentNode;