110 Commits

Author SHA1 Message Date
Max Bruckner
35ce7f7fb4 Make Node.toTex a wrapper like Node.compile
Node.prototype.toTex is now a wrapper that calls the node's _toTex
2015-03-13 21:23:14 +01:00
Max Bruckner
37c1363c2d Pass callbacks to toTex functions 2015-03-13 21:23:13 +01:00
Max Bruckner
6a9c2df38c Update FunctionAssignmentNode to better handle parenthesis 2015-03-01 17:10:09 +01:00
Max Bruckner
bb2bfc939c Update AssignmentNode to better handle parenthesis 2015-03-01 17:02:42 +01:00
Max Bruckner
b2d868c2ed Update OperatorNode's toTex to better handle parens
Use the new infrastructure in OperatorNode's toTex
2015-03-01 16:34:09 +01:00
Max Bruckner
b5ce799e9d New generic toString for AssignmentNode 2015-03-01 10:35:04 +01:00
Max Bruckner
1f2f42012c New generic toString for FunctionAssignmentNode 2015-03-01 10:35:04 +01:00
Max Bruckner
b1a438fd7f New generic toString for RangeNode 2015-03-01 10:35:03 +01:00
Max Bruckner
9489fbf9dc New generic toString for ConditionalNode 2015-03-01 10:35:03 +01:00
Max Bruckner
1ac3319656 OperatorNode: validate input 2015-03-01 10:35:03 +01:00
Max Bruckner
0e5a6e5a38 New generic toString for OperatorNode 2015-03-01 10:35:03 +01:00
Max Bruckner
946df4d4b2 Function to calculate all necessary parentheses
calculateNecessaryParentheses takes an OperatorNode and it's arguments
and calculates which of those arguments need to be put in parentheses
based on precedence and associativity.
2015-03-01 10:35:03 +01:00
Max Bruckner
d593e749e9 New function getIdentifier() for Nodes
getIdentifier() returns a String that contains the name of the node and
the function associated with it ( in case of FunctionNode and
OperatorNode ).
2015-03-01 10:35:03 +01:00
Jos de Jong
4669542079 Merge pull request #277 from FSMaxB/totex-fix
Fix missing brackets in LaTeX output (bug #273)
2015-02-20 12:41:41 +00:00
jos
70a476c357 Replaced all require('decimal.js') with require('../type/BigNumber'), containing the toJSON and fromJSON methods for BigNumber 2015-02-18 20:41:27 +01:00
Max Bruckner
183d15fcfe OperatorNode: remove unnecessary elseif 2015-02-14 02:36:57 +01:00
Max Bruckner
bbe22a9055 fix: no brackets with single operators (bug #273)
* Use brackets after unary minus followed by an OperatorNode with + or -
 - "-(a+b)", "-(a-b)"
* Use brackets in fron of postfix operators like '!' (for OperatorNode)
 - "(a*b)!", "(a+b)!"
2015-02-14 02:36:38 +01:00
Max Bruckner
23b1890f7e fix indentation of previous commit 2015-02-14 01:48:54 +01:00
Max Bruckner
9b6d7ead9f Fix missing brackets in LaTeX output (bug #273)
When creating the LaTeX output for expressions like 1-(1+1) or 1-(1-1),
the bracket's where missing.
2015-02-13 16:51:40 +01:00
jos
86bcd55352 Changed the way transforms are registered internally, making Node.compile faster, and enabling lazy-loading constants 2015-01-13 10:48:52 +01:00
jos
309bf3938d Added proper error messages to Node.map 2014-11-15 13:32:02 +01:00
jos
9257ec3c33 Added unit tests for Node.map and Node.forEach 2014-11-15 13:16:32 +01:00
jos
5669ae1365 Some refactoring 2014-11-14 11:35:13 +01:00
jos
a1f60db0d1 Created Node.map, changed traverse to use Node.map 2014-11-14 11:25:48 +01:00
jos
20c96894ab Enforcing implementation of _traverse on Nodes 2014-11-13 22:16:57 +01:00
jos
be9a8629ea Node.transform does not create a clone of the tree anymore 2014-11-13 22:01:48 +01:00
jos
92627f2c94 Nodes for a BlockNode must now be passed via the constructor instead of via a function add 2014-11-13 21:54:41 +01:00
jos
423909e6f1 Changed constructor of RangeNode to new RangeNode(start: Node, end: Node [, step: Node]). 2014-11-13 21:25:37 +01:00
jos
72a1b03850 Documented expression tree API. Some internal refactoring in nodes. 2014-11-12 22:30:15 +01:00
jos
bd1981ecd0 Renamed Node.map and Node.forEach back to traverse and transform 2014-10-13 21:42:48 +02:00
jos
adf0b39a69 Fixed deprecated messages 2014-10-12 19:45:05 +02:00
jos
b4de2cb549 Some code reorganization 2014-10-12 19:37:02 +02:00
jos
238281e28a Renamed traverse and transform to forEach and map 2014-10-12 19:32:51 +02:00
jos
ae588c9d93 Removed a todo 2014-10-11 22:30:52 +02:00
jos
ba70c07509 Added unit tests for Node.clone 2014-10-11 22:29:48 +02:00
jos
95a49fe156 Node.transform first clones the node tree 2014-10-11 21:59:47 +02:00
jos
839e596772 Implemented transform and traverse 2014-10-11 18:03:41 +02:00
jos
5f08307391 Implemented a function replace for nodes of a parsed expression. 2014-10-11 15:33:23 +02:00
jos
52a922e937 Fixed #210: Disabled array notation for ranges in a matrix index the expression parser 2014-09-09 17:33:53 +02:00
jos
a172b52fdc Renamed raw to rawArgs (see #207) 2014-08-18 09:02:04 +02:00
jos
f23c87c4f7 renamed __transform__ to transform 2014-08-16 17:41:37 +02:00
jos
396777f724 Raw functions are now invoked as fn(args, math, scope) 2014-08-16 15:06:11 +02:00
jos
99fc9a0ead Implemented support for raw functions 2014-08-16 12:13:57 +02:00
jos
e5d14ca3dd Some refactoring of the FunctionNode 2014-08-16 11:13:24 +02:00
jos
8a12c8e9bc Fixed #200: A new instanceof of math.js must now be created as math.create([options]) instead of math([options]) 2014-08-03 21:42:12 +02:00
jos
6b833a581c Renamed FunctionNode to FunctionAssignmentNode, and renamed ParamsNode to FunctionNode for more clarity (see #203) 2014-08-03 21:13:24 +02:00
jos
8200955d71 Removed unnecessary names of functions 2014-07-21 22:14:27 +02:00
jos
8c224d3e71 Moved transformation of error messages (zero-based to one-based) to the expression/transform section 2014-07-20 20:45:10 +02:00
jos
21b34cfa1a Implemented transforms, moved all one-based to zero-based logic for expressions to transforms. 2014-07-19 21:47:15 +02:00
jos
40986a1325 Using strict mode now in all files (added 'use strict'; on top of every file) 2014-07-18 23:19:14 +02:00