Fix of bug fixes in `rationalize.js`, also changing `simplify.js` and `simplifyConstant.js` and more 2 bugs in `simplify.js` and `simplifyconstant.js` in order to be possible passing in `Travis` test.
**Bugs in `simplifyConstant.js` and `simplify.js`**
1. `simplifyConstant.js` - I've changed `new ConstantNode(stringNumber, 'number')` to `new ConstantNode(number)`
1. `simplify.js` - Due to problems with a number node with string type, I've added `!isNaN(node.value)))` in number type test condition
**Bugs in `rationalize.js`**
3. I've fixed negative power exponents and decimals coefficients troubles. The decimals coefficients problem has led to the need to add a new feature in `simplify.js ` and `simplifyConstant.js` (next topic)
**New feature in `simplify.js` and `simplifyConstant.js`**
4. New rule type (string), whose valid values are in `listCommStrings` new variable. The only string rule accepted so far is to turn off exact fraction conversion in `simplifyConstant.js`
`state.c` is always equal to `state.expression.charAt(state.index)`.
Therefore, the property `c` does not need to be included in the state.
This commit replaces all occurances of `state.c` with `currentCharacter(state)`.
This commit adds two functions:
- `currentCharacter` replaces `state.c`
- `currentString` which returns a substring starting at the current character.
Rename `nextPreview` and `prevPreview` to `nextCharacter` and `prevCharacter`
respectively so that these function names reflect the purpose of these functions.
This commit entirely removes the global state from `parse`.
The state is passed as an object to each function, functions modify the state passed to them.
Combines most of the global state used when passing expressions into an object called `state`.
This makes it easier to refactor this code going forward and clarifies which functions touch the global state.
`tokenStates` is still a seperate global variable which now contains copies of the state.
When this error is encountered in the field, I see it via honeybadger, but I have none of the context about what unit it was called in, and what unit it was being converted to. Help the debugging by adding some info to the exception. I'm not entirely sure that 'toString' is what I want here - perhaps others in the community can help make that the right expression?