New generic toString for FunctionAssignmentNode

This commit is contained in:
Max Bruckner 2015-03-01 10:22:34 +01:00
parent b1a438fd7f
commit 1f2f42012c
2 changed files with 19 additions and 2 deletions

View File

@ -3,6 +3,7 @@
var Node = require('./Node');
var keywords = require('../keywords');
var latex = require('../../util/latex');
var operators = require('../operators');
var isString = require('../../util/string').isString;
var isArray = Array.isArray;
@ -96,9 +97,15 @@ FunctionAssignmentNode.prototype.clone = function() {
* @return {String} str
*/
FunctionAssignmentNode.prototype.toString = function() {
var precedence = operators.getPrecedence(this);
var exprPrecedence = operators.getPrecedence(this.expr);
var expr = this.expr.toString();
if ((exprPrecedence !== null) && (exprPrecedence <= precedence)) {
expr = '(' + expr + ')';
}
return 'function ' + this.name +
'(' + this.params.join(', ') + ') = ' +
this.expr.toString();
'(' + this.params.join(', ') + ') = ' + expr;
};
/**

View File

@ -6,6 +6,7 @@ var assert = require('assert'),
ConstantNode = require('../../../lib/expression/node/ConstantNode'),
OperatorNode = require('../../../lib/expression/node/OperatorNode'),
FunctionAssignmentNode = require('../../../lib/expression/node/FunctionAssignmentNode'),
AssignmentNode = require('../../../lib/expression/node/AssignmentNode'),
RangeNode = require('../../../lib/expression/node/RangeNode'),
SymbolNode = require('../../../lib/expression/node/SymbolNode');
@ -178,6 +179,15 @@ describe('FunctionAssignmentNode', function() {
assert.equal(n.toString(), 'function f(x) = 2 + x');
});
it ('should stringify a FunctionAssignmentNode conataining an AssignmentNode', function () {
var a = new ConstantNode(2);
var n1 = new AssignmentNode('a', a);
var n = new FunctionAssignmentNode('f', ['x'], n1);
assert.equal(n.toString(), 'function f(x) = (a = 2)');
});
it ('should LaTeX a FunctionAssignmentNode', function() {
var a = new ConstantNode(2);
var x = new SymbolNode('x');