jos
9ffab397b6
Fixed #485 : Scoping issue with variables both used globally as well as in a function definition
2015-11-28 21:20:25 +01:00
jos
2353c4a61e
Renamed folders util to utils
2015-07-18 13:22:38 +02:00
jos
6c7bf4acf0
Removed boolean, string, and null from the list with argument types, only leaving the directly supported types (which types can be converted to supported types is determined externally). Consistently renamed primitive types lower case (boolean, string, number, null) and non-primitive types uppercase (Complex, BigNumber, Function, Array, ...).
2015-05-20 21:08:26 +02:00
Max Bruckner
5b160767c1
operators.js: Pass parenthesis option directly
2015-05-16 13:31:57 +02:00
Max Bruckner
3f217cefdd
toTex: no global configuration. Only pass around one local object
2015-05-16 13:30:25 +02:00
Max Bruckner
c0e1b2d268
toString: no global configuration. Only pass around one local object
2015-05-16 13:29:55 +02:00
Max Bruckner
a347405a98
toString: implement callbacks and local configuration
2015-05-16 13:28:51 +02:00
Max Bruckner
291d620972
Pass local configuration to toTex functions
2015-05-16 13:27:48 +02:00
Max Bruckner
aa7ca9178f
Implement 'all' parenthesis option
2015-05-08 09:07:15 +02:00
Max Bruckner
5767f1f912
OperatorNode: Fix bug from wrong use of getIdentifier
...
1+(1+1) with parenthesis set to 'auto' triggered a bug because
getPrecedence gets the precedence of the content of a node, but
getIdentifier still returns the 'ParenthesisNode' identifier in case of
a ParenthesisNode.
2015-05-07 12:04:53 +02:00
Max Bruckner
2959858b99
operators: Use config when calculating precedence etc.
...
Use the parenthesis configuration to decide wether ParenthesisNodes
should be skipped or not.
2015-05-07 10:13:43 +02:00
Max Bruckner
bc2c29be8c
Make _toString functions call the wrapper
2015-05-07 10:12:32 +02:00
Max Bruckner
6235fd6ce1
Make toString a wrapper around _toString
...
This enables preparating the node tree in `toString` before generating
the actual string output with `_toString` methods
2015-04-30 00:12:54 +02:00
Max Bruckner
8282f424c2
Use the prototype for is<Node> instead of the constructor
2015-04-28 20:13:53 +02:00
Max Bruckner
250707b668
Convert the isNode function into a boolean property.
2015-04-28 09:56:01 +02:00
Max Bruckner
390a0060b4
Add is<NameOfNode> property to enable type checking across constructors
2015-04-28 09:14:53 +02:00
jos
d3d3212633
Refactored all nodes into factory functions (see #342 )
2015-04-26 21:25:31 +02:00
Max Bruckner
55a66aeaaf
OperatorNode.toTex: get rid of unnecessary curly braces
2015-04-19 09:49:09 +02:00
Max Bruckner
8db07e23ad
OperatorNode.toTex: BUGFIX: make clear where the exponent belongs to
...
Without proper parentheses it's impossible to decide whether an exponent
belongs to the numerator of a fraction or to the entire fraction.
For ConditionalNode, the exponent is hard to see without parentheses.
2015-04-19 02:11:20 +02:00
Max Bruckner
f2bcfed89f
LaTeX: no spaces between operands and operators
2015-04-17 14:18:24 +02:00
Max Bruckner
7c1c9c0cef
Show less unnecessary parentheses in LaTeX output
...
OperatorNodes with exponentiation, fractions and conditions use less
parentheses.
2015-04-16 22:31:02 +02:00
Max Bruckner
dacf9fba46
OperatorNode: bugfix: toTex creates invalid LaTeX
...
toTex has been creating invalid LaTeX for fractions where the operands
are in parenthesis, see '(1+1)/2' for example
2015-04-05 14:29:15 +02:00
Max Bruckner
671734f215
util/latex: Use function names as keys for map of operators
2015-04-05 14:29:14 +02:00
Max Bruckner
e536af8328
OperatorNode: get rid of util/latex's toFunction
2015-04-05 14:29:13 +02:00
Max Bruckner
0772a1fb81
util/latex: Get rid of toUnit ( hasn't been working anyway )
2015-04-05 14:29:12 +02:00
Max Bruckner
e160efbb66
util/latex: get rid of the toOperator function
2015-04-05 14:29:11 +02:00
Max Bruckner
5dcb87aeaa
util/latex: Remove unused functions
...
* toArgs
* addBraces
* dots and curly functions
util/latex.js: Remove Function addBraces
util/latex.js remove dots and curly functions
2015-04-05 14:29:09 +02:00
Max Bruckner
13e35217b7
Latex restructure
2015-04-05 14:25:54 +02:00
Max Bruckner
e04dfd26bc
Rename customFuncions to callbacks
2015-03-17 18:30:26 +01:00
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
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
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
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
309bf3938d
Added proper error messages to Node.map
2014-11-15 13:32:02 +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
72a1b03850
Documented expression tree API. Some internal refactoring in nodes.
2014-11-12 22:30:15 +01: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
6b833a581c
Renamed FunctionNode to FunctionAssignmentNode, and renamed ParamsNode to FunctionNode for more clarity (see #203 )
2014-08-03 21:13:24 +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
Niels Heisterkamp
086e59061a
Fixed test and removed remaining console.log.
2014-05-19 20:32:25 +02:00