@pie-lib/math-evaluator 2.1.6 → 2.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,7 +3,7 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- ## [2.1.6](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@2.1.4...@pie-lib/math-evaluator@2.1.6) (2021-06-25)
6
+ ## [2.1.7](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@2.1.6...@pie-lib/math-evaluator@2.1.7) (2022-11-23)
7
7
 
8
8
  **Note:** Version bump only for package @pie-lib/math-evaluator
9
9
 
@@ -11,326 +11,179 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
11
11
 
12
12
 
13
13
 
14
- ## [2.1.4](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@2.1.3...@pie-lib/math-evaluator@2.1.4) (2021-02-15)
14
+ ## [2.1.6](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@2.1.4...@pie-lib/math-evaluator@2.1.6) (2021-06-25)
15
15
 
16
16
  **Note:** Version bump only for package @pie-lib/math-evaluator
17
17
 
18
+ ## [2.1.4](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@2.1.3...@pie-lib/math-evaluator@2.1.4) (2021-02-15)
18
19
 
19
-
20
-
20
+ **Note:** Version bump only for package @pie-lib/math-evaluator
21
21
 
22
22
  ## [2.1.3](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@2.1.1...@pie-lib/math-evaluator@2.1.3) (2021-02-15)
23
23
 
24
24
  **Note:** Version bump only for package @pie-lib/math-evaluator
25
25
 
26
-
27
-
28
-
29
-
30
26
  ## [2.1.1](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@2.1.0...@pie-lib/math-evaluator@2.1.1) (2020-08-11)
31
27
 
32
28
  **Note:** Version bump only for package @pie-lib/math-evaluator
33
29
 
34
-
35
-
36
-
37
-
38
30
  # [2.1.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@2.0.0...@pie-lib/math-evaluator@2.1.0) (2020-06-05)
39
31
 
40
-
41
32
  ### Features
42
33
 
43
- * bump mathjs@^7.0.1 ([865de4b](https://github.com/pie-framework/pie-lib/commit/865de4b))
44
-
45
-
46
-
47
-
34
+ - bump mathjs@^7.0.1 ([865de4b](https://github.com/pie-framework/pie-lib/commit/865de4b))
48
35
 
49
36
  # [2.0.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@0.6.22...@pie-lib/math-evaluator@2.0.0) (2020-04-27)
50
37
 
51
-
52
38
  ### Features
53
39
 
54
- * major version bump ([78da9d5](https://github.com/pie-framework/pie-lib/commit/78da9d5))
55
-
40
+ - major version bump ([78da9d5](https://github.com/pie-framework/pie-lib/commit/78da9d5))
56
41
 
57
42
  ### BREAKING CHANGES
58
43
 
59
- * The last release should have been breaking - this
60
- should trigger a major bump now
61
-
62
-
63
-
64
-
44
+ - The last release should have been breaking - this
45
+ should trigger a major bump now
65
46
 
66
47
  ## [0.6.22](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@0.6.21...@pie-lib/math-evaluator@0.6.22) (2020-04-27)
67
48
 
68
49
  **Note:** Version bump only for package @pie-lib/math-evaluator
69
50
 
70
-
71
-
72
-
73
-
74
51
  ## [0.6.21](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@0.6.20...@pie-lib/math-evaluator@0.6.21) (2020-04-15)
75
52
 
76
-
77
53
  ### Bug Fixes
78
54
 
79
- * **math-evaluator:** support `x^(1/y) == sqrt(x,y)` PD-3 ([fa148ff](https://github.com/pie-framework/pie-lib/commit/fa148ff))
80
-
81
-
82
-
83
-
55
+ - **math-evaluator:** support `x^(1/y) == sqrt(x,y)` PD-3 ([fa148ff](https://github.com/pie-framework/pie-lib/commit/fa148ff))
84
56
 
85
57
  ## [0.6.20](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@0.6.19...@pie-lib/math-evaluator@0.6.20) (2020-04-14)
86
58
 
87
59
  **Note:** Version bump only for package @pie-lib/math-evaluator
88
60
 
89
-
90
-
91
-
92
-
93
61
  ## [0.6.19](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@0.6.18...@pie-lib/math-evaluator@0.6.19) (2020-04-08)
94
62
 
95
63
  **Note:** Version bump only for package @pie-lib/math-evaluator
96
64
 
97
-
98
-
99
-
100
-
101
65
  ## [0.6.18](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@0.6.17...@pie-lib/math-evaluator@0.6.18) (2020-03-31)
102
66
 
103
67
  **Note:** Version bump only for package @pie-lib/math-evaluator
104
68
 
105
-
106
-
107
-
108
-
109
69
  ## [0.6.17](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@0.6.16...@pie-lib/math-evaluator@0.6.17) (2020-03-31)
110
70
 
111
71
  **Note:** Version bump only for package @pie-lib/math-evaluator
112
72
 
113
-
114
-
115
-
116
-
117
73
  ## [0.6.16](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@0.6.15...@pie-lib/math-evaluator@0.6.16) (2020-03-31)
118
74
 
119
75
  **Note:** Version bump only for package @pie-lib/math-evaluator
120
76
 
121
-
122
-
123
-
124
-
125
77
  ## [0.6.15](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@0.6.14...@pie-lib/math-evaluator@0.6.15) (2020-03-30)
126
78
 
127
79
  **Note:** Version bump only for package @pie-lib/math-evaluator
128
80
 
129
-
130
-
131
-
132
-
133
81
  ## [0.6.14](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@0.6.13...@pie-lib/math-evaluator@0.6.14) (2020-03-30)
134
82
 
135
83
  **Note:** Version bump only for package @pie-lib/math-evaluator
136
84
 
137
-
138
-
139
-
140
-
141
85
  ## [0.6.13](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@0.6.12...@pie-lib/math-evaluator@0.6.13) (2020-03-30)
142
86
 
143
87
  **Note:** Version bump only for package @pie-lib/math-evaluator
144
88
 
145
-
146
-
147
-
148
-
149
89
  ## [0.6.12](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@0.6.11...@pie-lib/math-evaluator@0.6.12) (2020-03-30)
150
90
 
151
91
  **Note:** Version bump only for package @pie-lib/math-evaluator
152
92
 
153
-
154
-
155
-
156
-
157
93
  ## [0.6.11](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@0.6.10...@pie-lib/math-evaluator@0.6.11) (2020-03-30)
158
94
 
159
95
  **Note:** Version bump only for package @pie-lib/math-evaluator
160
96
 
161
-
162
-
163
-
164
-
165
97
  ## [0.6.10](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@0.6.9...@pie-lib/math-evaluator@0.6.10) (2020-03-30)
166
98
 
167
99
  **Note:** Version bump only for package @pie-lib/math-evaluator
168
100
 
169
-
170
-
171
-
172
-
173
101
  ## [0.6.9](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@0.6.8...@pie-lib/math-evaluator@0.6.9) (2020-03-30)
174
102
 
175
-
176
103
  ### Bug Fixes
177
104
 
178
- * add module prop to package.json ([f0d7718](https://github.com/pie-framework/pie-lib/commit/f0d7718))
179
-
180
-
181
-
182
-
105
+ - add module prop to package.json ([f0d7718](https://github.com/pie-framework/pie-lib/commit/f0d7718))
183
106
 
184
107
  ## [0.6.8](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@0.6.7...@pie-lib/math-evaluator@0.6.8) (2020-02-05)
185
108
 
186
109
  **Note:** Version bump only for package @pie-lib/math-evaluator
187
110
 
188
-
189
-
190
-
191
-
192
111
  ## [0.6.7](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@0.6.6...@pie-lib/math-evaluator@0.6.7) (2020-01-28)
193
112
 
194
-
195
113
  ### Bug Fixes
196
114
 
197
- * throw error if number missing factor ([3b23b28](https://github.com/pie-framework/pie-lib/commit/3b23b28))
198
-
199
-
200
-
201
-
115
+ - throw error if number missing factor ([3b23b28](https://github.com/pie-framework/pie-lib/commit/3b23b28))
202
116
 
203
117
  ## [0.6.6](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@0.6.5...@pie-lib/math-evaluator@0.6.6) (2020-01-27)
204
118
 
205
-
206
119
  ### Bug Fixes
207
120
 
208
- * bump @pie-framework/math-expressions@2.2.0 [ch7119] ([b7fa810](https://github.com/pie-framework/pie-lib/commit/b7fa810))
209
-
210
-
211
-
212
-
121
+ - bump @pie-framework/math-expressions@2.2.0 [ch7119](<[b7fa810](https://github.com/pie-framework/pie-lib/commit/b7fa810)>)
213
122
 
214
123
  ## [0.6.5](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@0.6.4...@pie-lib/math-evaluator@0.6.5) (2019-12-20)
215
124
 
216
-
217
125
  ### Bug Fixes
218
126
 
219
- * bump @pie-framework/math-expressions@^2.1.0 ch6456 ([d57971f](https://github.com/pie-framework/pie-lib/commit/d57971f))
220
-
221
-
222
-
223
-
127
+ - bump @pie-framework/math-expressions@^2.1.0 ch6456 ([d57971f](https://github.com/pie-framework/pie-lib/commit/d57971f))
224
128
 
225
129
  ## [0.6.4](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@0.6.3...@pie-lib/math-evaluator@0.6.4) (2019-12-10)
226
130
 
227
131
  **Note:** Version bump only for package @pie-lib/math-evaluator
228
132
 
229
-
230
-
231
-
232
-
233
133
  ## [0.6.3](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@0.6.2...@pie-lib/math-evaluator@0.6.3) (2019-12-10)
234
134
 
235
135
  **Note:** Version bump only for package @pie-lib/math-evaluator
236
136
 
237
-
238
-
239
-
240
-
241
137
  ## [0.6.2](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@0.6.1...@pie-lib/math-evaluator@0.6.2) (2019-12-03)
242
138
 
243
139
  **Note:** Version bump only for package @pie-lib/math-evaluator
244
140
 
245
-
246
-
247
-
248
-
249
141
  ## [0.6.1](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@0.6.0...@pie-lib/math-evaluator@0.6.1) (2019-11-28)
250
142
 
251
143
  **Note:** Version bump only for package @pie-lib/math-evaluator
252
144
 
253
-
254
-
255
-
256
-
257
145
  # [0.6.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@0.5.7...@pie-lib/math-evaluator@0.6.0) (2019-11-27)
258
146
 
259
-
260
147
  ### Bug Fixes
261
148
 
262
- * **math-evaluator:** finalize fix for PIE-188 ([d7bd4a1](https://github.com/pie-framework/pie-lib/commit/d7bd4a1))
263
- * **math-evaluator:** finalize fix for PIE-188, custom and unrecognized latex commands ([b37184d](https://github.com/pie-framework/pie-lib/commit/b37184d))
264
- * **math-evaluator:** PIE-188 related fixes and tests ([76424c6](https://github.com/pie-framework/pie-lib/commit/76424c6))
265
-
149
+ - **math-evaluator:** finalize fix for PIE-188 ([d7bd4a1](https://github.com/pie-framework/pie-lib/commit/d7bd4a1))
150
+ - **math-evaluator:** finalize fix for PIE-188, custom and unrecognized latex commands ([b37184d](https://github.com/pie-framework/pie-lib/commit/b37184d))
151
+ - **math-evaluator:** PIE-188 related fixes and tests ([76424c6](https://github.com/pie-framework/pie-lib/commit/76424c6))
266
152
 
267
153
  ### Features
268
154
 
269
- * **math-evaluator:** change math-expressions to pie fork ([06e8b61](https://github.com/pie-framework/pie-lib/commit/06e8b61))
270
-
271
-
272
-
273
-
155
+ - **math-evaluator:** change math-expressions to pie fork ([06e8b61](https://github.com/pie-framework/pie-lib/commit/06e8b61))
274
156
 
275
157
  ## [0.5.7](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@0.5.6...@pie-lib/math-evaluator@0.5.7) (2019-08-21)
276
158
 
277
159
  **Note:** Version bump only for package @pie-lib/math-evaluator
278
160
 
279
-
280
-
281
-
282
-
283
161
  ## [0.5.6](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@0.5.5...@pie-lib/math-evaluator@0.5.6) (2019-07-08)
284
162
 
285
163
  **Note:** Version bump only for package @pie-lib/math-evaluator
286
164
 
287
-
288
-
289
-
290
-
291
165
  ## [0.5.5](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@0.5.4...@pie-lib/math-evaluator@0.5.5) (2019-07-05)
292
166
 
293
167
  **Note:** Version bump only for package @pie-lib/math-evaluator
294
168
 
295
-
296
-
297
-
298
-
299
169
  ## [0.5.4](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@0.5.3...@pie-lib/math-evaluator@0.5.4) (2019-07-02)
300
170
 
301
-
302
171
  ### Bug Fixes
303
172
 
304
- * **math-evaluator:** fix equals sign treatment in expressions ([f81e924](https://github.com/pie-framework/pie-lib/commit/f81e924))
305
-
306
-
307
-
308
-
173
+ - **math-evaluator:** fix equals sign treatment in expressions ([f81e924](https://github.com/pie-framework/pie-lib/commit/f81e924))
309
174
 
310
175
  ## [0.5.3](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@0.5.2...@pie-lib/math-evaluator@0.5.3) (2019-06-17)
311
176
 
312
177
  **Note:** Version bump only for package @pie-lib/math-evaluator
313
178
 
314
-
315
-
316
-
317
-
318
179
  ## [0.5.2](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@0.5.1...@pie-lib/math-evaluator@0.5.2) (2019-06-12)
319
180
 
320
181
  **Note:** Version bump only for package @pie-lib/math-evaluator
321
182
 
322
-
323
-
324
-
325
-
326
183
  ## [0.5.1](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@0.5.0...@pie-lib/math-evaluator@0.5.1) (2019-06-05)
327
184
 
328
185
  **Note:** Version bump only for package @pie-lib/math-evaluator
329
186
 
330
-
331
-
332
-
333
-
334
187
  # [0.5.0](https://github.com/pie-framework/pie-lib/compare/@pie-lib/math-evaluator@0.4.4...@pie-lib/math-evaluator@0.5.0) (2019-05-14)
335
188
 
336
189
  ### Features
package/lib/index.js CHANGED
@@ -1,23 +1,27 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
3
7
  Object.defineProperty(exports, "__esModule", {
4
8
  value: true
5
9
  });
6
- exports["default"] = exports.ave = exports.textToMathText = exports.latexToText = void 0;
10
+ exports.textToMathText = exports.latexToText = exports["default"] = exports.ave = void 0;
11
+
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
7
13
 
8
14
  var mathjs = _interopRequireWildcard(require("mathjs"));
9
15
 
10
16
  var _mathExpressions = _interopRequireDefault(require("@pie-framework/math-expressions"));
11
17
 
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13
-
14
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj["default"] = obj; return newObj; } }
18
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
19
 
16
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
20
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
21
 
18
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
22
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
19
23
 
20
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
24
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
21
25
 
22
26
  var decimalCommaRegex = /,/g;
23
27
  var decimalRegex = /\.|,/g;
@@ -74,8 +78,8 @@ var astToTextOpts = {
74
78
 
75
79
  var latexToText = function latexToText(latex) {
76
80
  var extraOtps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
77
- var la = new _mathExpressions["default"].converters.latexToAstObj(_objectSpread({}, latexToAstOpts, {}, extraOtps));
78
- var at = new _mathExpressions["default"].converters.astToTextObj(_objectSpread({}, astToTextOpts, {}, extraOtps));
81
+ var la = new _mathExpressions["default"].converters.latexToAstObj(_objectSpread(_objectSpread({}, latexToAstOpts), extraOtps));
82
+ var at = new _mathExpressions["default"].converters.astToTextObj(_objectSpread(_objectSpread({}, astToTextOpts), extraOtps));
79
83
  var ast = la.convert(latex);
80
84
  return at.convert(ast);
81
85
  };
@@ -84,8 +88,8 @@ exports.latexToText = latexToText;
84
88
 
85
89
  var textToMathText = function textToMathText(latex) {
86
90
  var extraOtps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
87
- var la = new _mathExpressions["default"].converters.textToAstObj(_objectSpread({}, latexToAstOpts, {}, extraOtps));
88
- var at = new _mathExpressions["default"].converters.astToTextObj(_objectSpread({}, astToTextOpts, {}, extraOtps));
91
+ var la = new _mathExpressions["default"].converters.textToAstObj(_objectSpread(_objectSpread({}, latexToAstOpts), extraOtps));
92
+ var at = new _mathExpressions["default"].converters.astToTextObj(_objectSpread(_objectSpread({}, astToTextOpts), extraOtps));
89
93
  var ast = la.convert(latex);
90
94
  return at.convert(ast);
91
95
  };
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["decimalCommaRegex","decimalRegex","decimalWithThousandSeparatorNumberRegex","rationalizeAllPossibleSubNodes","expression","rationalize","mathjs","parse","tree","transformedTree","transform","node","rationalizedNode","prepareExpression","string","isLatex","returnValue","trim","replace","latexToText","textToMathText","unknownCommands","toString","latexToAstOpts","missingFactor","token","e","console","warn","token_type","unknownCommandBehavior","astToTextOpts","unicode_operators","ne","operands","join","latex","extraOtps","la","me","converters","latexToAstObj","at","astToTextObj","ast","convert","textToAstObj","shouldRationalizeEntireTree","shouldDoIt","traverse","type","fn","exponent","args","compile","eval","functionParameter","containsDecimal","match","SIMPLIFY_RULES","l","r","simplify","v","concat","rules","areValuesEqual","valueOne","valueTwo","options","allowDecimals","inverse","valueOneToUse","valueTwoToUse","test","preparedValueOne","preparedValueTwo","one","two","equals","ave","a","b","am","bm","arm","brm"],"mappings":"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","sourcesContent":["/* eslint-disable no-console */\nimport * as mathjs from 'mathjs';\nimport me from '@pie-framework/math-expressions';\n\nconst decimalCommaRegex = /,/g;\nconst decimalRegex = /\\.|,/g;\nconst decimalWithThousandSeparatorNumberRegex = /^(?!0+\\.00)(?=.{1,9}(\\.|$))(?!0(?!\\.))\\d{1,3}(,\\d{3})*(\\.\\d+)?$/;\n\nconst rationalizeAllPossibleSubNodes = expression => rationalize(mathjs.parse(expression));\nconst rationalize = tree => {\n const transformedTree = tree.transform(node => {\n try {\n const rationalizedNode = mathjs.rationalize(node);\n return rationalizedNode;\n } catch {\n return node;\n }\n });\n return transformedTree;\n};\n\nfunction prepareExpression(string, isLatex) {\n let returnValue = string ? string.trim() : '';\n\n returnValue = returnValue.replace(decimalCommaRegex, '.');\n\n returnValue = isLatex\n ? latexToText(`${returnValue}`)\n : textToMathText(`${returnValue}`, { unknownCommands: 'passthrough' }).toString();\n\n returnValue = returnValue.replace('=', '==');\n return rationalizeAllPossibleSubNodes(returnValue);\n}\n\nconst latexToAstOpts = {\n missingFactor: (token, e) => {\n console.warn('missing factor for: ', token.token_type);\n if (token.token_type === 'NUMBER') {\n throw e;\n }\n return 0;\n },\n unknownCommandBehavior: 'passthrough'\n};\n\nconst astToTextOpts = {\n unicode_operators: {\n ne: function(operands) {\n return operands.join(' != ');\n },\n '%': function(operands) {\n return `percent(${operands[0]})`;\n }\n }\n};\n\nexport const latexToText = (latex, extraOtps = {}) => {\n const la = new me.converters.latexToAstObj({ ...latexToAstOpts, ...extraOtps });\n\n const at = new me.converters.astToTextObj({ ...astToTextOpts, ...extraOtps });\n\n const ast = la.convert(latex);\n\n return at.convert(ast);\n};\n\nexport const textToMathText = (latex, extraOtps = {}) => {\n const la = new me.converters.textToAstObj({ ...latexToAstOpts, ...extraOtps });\n\n const at = new me.converters.astToTextObj({ ...astToTextOpts, ...extraOtps });\n\n const ast = la.convert(latex);\n\n return at.convert(ast);\n};\n\nfunction shouldRationalizeEntireTree(tree) {\n let shouldDoIt = true;\n\n // we need to iterate the entire tree to check for some conditions that might make rationalization impossible\n try {\n tree.traverse(node => {\n // if we have a variable as an exponent for power operation, we should not rationalize\n // try to see if there are power operations with variable exponents\n if (node.type === 'OperatorNode' && node.fn === 'pow') {\n const exponent = node.args[1];\n\n // try to see if it can be compiled and evaluated - if it's a non-numerical value, it'll throw an error\n exponent.compile().eval();\n }\n\n // we cannot have variables for unresolved function calls either\n if (node.type === 'FunctionNode') {\n //try to see if the argument that the function is called with can be resolved as non-variable\n const functionParameter = node.args[0];\n\n // if it holds variables, this will throw an error\n functionParameter.compile().eval();\n }\n });\n\n mathjs.rationalize(tree);\n } catch {\n shouldDoIt = false;\n }\n\n return shouldDoIt;\n}\n\nfunction containsDecimal(expression = '') {\n return expression.match(decimalRegex);\n}\nconst SIMPLIFY_RULES = [\n { l: 'n1^(1/n2)', r: 'nthRoot(n1, n2)' },\n { l: 'sqrt(n1)', r: 'nthRoot(n1, 2)' }\n];\n\nconst simplify = v => mathjs.simplify(v, SIMPLIFY_RULES.concat(mathjs.simplify.rules)); //.concat(SIMPLIFY_RULES));\n\nconst areValuesEqual = (valueOne, valueTwo, options = {}) => {\n const {\n // if explicitly set to false, having a decimal value in either side will result in a false equality\n // regardless of mathematical correctness\n allowDecimals,\n isLatex, // if the passed in values are latex, they need to be escaped\n inverse // returns inverse for the comparison result\n } = options;\n\n let valueOneToUse = valueOne;\n let valueTwoToUse = valueTwo;\n\n if (allowDecimals === false) {\n if (containsDecimal(valueOne) || containsDecimal(valueTwo)) {\n return false;\n }\n } else if (allowDecimals === true) {\n if (containsDecimal(valueOne) && decimalWithThousandSeparatorNumberRegex.test(valueOne)) {\n valueOneToUse = valueOne.replace(decimalCommaRegex, '');\n }\n\n if (containsDecimal(valueTwo) && decimalWithThousandSeparatorNumberRegex.test(valueTwo)) {\n valueTwoToUse = valueTwo.replace(decimalCommaRegex, '');\n }\n }\n\n const preparedValueOne = prepareExpression(valueOneToUse, isLatex, allowDecimals);\n const preparedValueTwo = prepareExpression(valueTwoToUse, isLatex, allowDecimals);\n\n let one = shouldRationalizeEntireTree(preparedValueOne)\n ? mathjs.rationalize(preparedValueOne)\n : preparedValueOne;\n let two = shouldRationalizeEntireTree(preparedValueTwo)\n ? mathjs.rationalize(preparedValueTwo)\n : preparedValueTwo;\n\n one = simplify(one);\n two = simplify(two);\n\n const equals = one.equals(two);\n\n return inverse ? !equals : equals;\n};\n\nexport const ave = (a, b) => {\n const am = mathjs.parse(a);\n const bm = mathjs.parse(b);\n\n const arm = simplify(am);\n const brm = simplify(bm);\n return arm.equals(brm);\n};\n\nexport default areValuesEqual;\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../src/index.js"],"names":["decimalCommaRegex","decimalRegex","decimalWithThousandSeparatorNumberRegex","rationalizeAllPossibleSubNodes","expression","rationalize","mathjs","parse","tree","transformedTree","transform","node","rationalizedNode","prepareExpression","string","isLatex","returnValue","trim","replace","latexToText","textToMathText","unknownCommands","toString","latexToAstOpts","missingFactor","token","e","console","warn","token_type","unknownCommandBehavior","astToTextOpts","unicode_operators","ne","operands","join","latex","extraOtps","la","me","converters","latexToAstObj","at","astToTextObj","ast","convert","textToAstObj","shouldRationalizeEntireTree","shouldDoIt","traverse","type","fn","exponent","args","compile","eval","functionParameter","containsDecimal","match","SIMPLIFY_RULES","l","r","simplify","v","concat","rules","areValuesEqual","valueOne","valueTwo","options","allowDecimals","inverse","valueOneToUse","valueTwoToUse","test","preparedValueOne","preparedValueTwo","one","two","equals","ave","a","b","am","bm","arm","brm"],"mappings":"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","sourcesContent":["/* eslint-disable no-console */\nimport * as mathjs from 'mathjs';\nimport me from '@pie-framework/math-expressions';\n\nconst decimalCommaRegex = /,/g;\nconst decimalRegex = /\\.|,/g;\nconst decimalWithThousandSeparatorNumberRegex = /^(?!0+\\.00)(?=.{1,9}(\\.|$))(?!0(?!\\.))\\d{1,3}(,\\d{3})*(\\.\\d+)?$/;\n\nconst rationalizeAllPossibleSubNodes = (expression) => rationalize(mathjs.parse(expression));\nconst rationalize = (tree) => {\n const transformedTree = tree.transform((node) => {\n try {\n const rationalizedNode = mathjs.rationalize(node);\n return rationalizedNode;\n } catch {\n return node;\n }\n });\n return transformedTree;\n};\n\nfunction prepareExpression(string, isLatex) {\n let returnValue = string ? string.trim() : '';\n\n returnValue = returnValue.replace(decimalCommaRegex, '.');\n\n returnValue = isLatex\n ? latexToText(`${returnValue}`)\n : textToMathText(`${returnValue}`, { unknownCommands: 'passthrough' }).toString();\n\n returnValue = returnValue.replace('=', '==');\n return rationalizeAllPossibleSubNodes(returnValue);\n}\n\nconst latexToAstOpts = {\n missingFactor: (token, e) => {\n console.warn('missing factor for: ', token.token_type);\n if (token.token_type === 'NUMBER') {\n throw e;\n }\n return 0;\n },\n unknownCommandBehavior: 'passthrough',\n};\n\nconst astToTextOpts = {\n unicode_operators: {\n ne: function(operands) {\n return operands.join(' != ');\n },\n '%': function(operands) {\n return `percent(${operands[0]})`;\n },\n },\n};\n\nexport const latexToText = (latex, extraOtps = {}) => {\n const la = new me.converters.latexToAstObj({ ...latexToAstOpts, ...extraOtps });\n\n const at = new me.converters.astToTextObj({ ...astToTextOpts, ...extraOtps });\n\n const ast = la.convert(latex);\n\n return at.convert(ast);\n};\n\nexport const textToMathText = (latex, extraOtps = {}) => {\n const la = new me.converters.textToAstObj({ ...latexToAstOpts, ...extraOtps });\n\n const at = new me.converters.astToTextObj({ ...astToTextOpts, ...extraOtps });\n\n const ast = la.convert(latex);\n\n return at.convert(ast);\n};\n\nfunction shouldRationalizeEntireTree(tree) {\n let shouldDoIt = true;\n\n // we need to iterate the entire tree to check for some conditions that might make rationalization impossible\n try {\n tree.traverse((node) => {\n // if we have a variable as an exponent for power operation, we should not rationalize\n // try to see if there are power operations with variable exponents\n if (node.type === 'OperatorNode' && node.fn === 'pow') {\n const exponent = node.args[1];\n\n // try to see if it can be compiled and evaluated - if it's a non-numerical value, it'll throw an error\n exponent.compile().eval();\n }\n\n // we cannot have variables for unresolved function calls either\n if (node.type === 'FunctionNode') {\n //try to see if the argument that the function is called with can be resolved as non-variable\n const functionParameter = node.args[0];\n\n // if it holds variables, this will throw an error\n functionParameter.compile().eval();\n }\n });\n\n mathjs.rationalize(tree);\n } catch {\n shouldDoIt = false;\n }\n\n return shouldDoIt;\n}\n\nfunction containsDecimal(expression = '') {\n return expression.match(decimalRegex);\n}\nconst SIMPLIFY_RULES = [\n { l: 'n1^(1/n2)', r: 'nthRoot(n1, n2)' },\n { l: 'sqrt(n1)', r: 'nthRoot(n1, 2)' },\n];\n\nconst simplify = (v) => mathjs.simplify(v, SIMPLIFY_RULES.concat(mathjs.simplify.rules)); //.concat(SIMPLIFY_RULES));\n\nconst areValuesEqual = (valueOne, valueTwo, options = {}) => {\n const {\n // if explicitly set to false, having a decimal value in either side will result in a false equality\n // regardless of mathematical correctness\n allowDecimals,\n isLatex, // if the passed in values are latex, they need to be escaped\n inverse, // returns inverse for the comparison result\n } = options;\n\n let valueOneToUse = valueOne;\n let valueTwoToUse = valueTwo;\n\n if (allowDecimals === false) {\n if (containsDecimal(valueOne) || containsDecimal(valueTwo)) {\n return false;\n }\n } else if (allowDecimals === true) {\n if (containsDecimal(valueOne) && decimalWithThousandSeparatorNumberRegex.test(valueOne)) {\n valueOneToUse = valueOne.replace(decimalCommaRegex, '');\n }\n\n if (containsDecimal(valueTwo) && decimalWithThousandSeparatorNumberRegex.test(valueTwo)) {\n valueTwoToUse = valueTwo.replace(decimalCommaRegex, '');\n }\n }\n\n const preparedValueOne = prepareExpression(valueOneToUse, isLatex, allowDecimals);\n const preparedValueTwo = prepareExpression(valueTwoToUse, isLatex, allowDecimals);\n\n let one = shouldRationalizeEntireTree(preparedValueOne) ? mathjs.rationalize(preparedValueOne) : preparedValueOne;\n let two = shouldRationalizeEntireTree(preparedValueTwo) ? mathjs.rationalize(preparedValueTwo) : preparedValueTwo;\n\n one = simplify(one);\n two = simplify(two);\n\n const equals = one.equals(two);\n\n return inverse ? !equals : equals;\n};\n\nexport const ave = (a, b) => {\n const am = mathjs.parse(a);\n const bm = mathjs.parse(b);\n\n const arm = simplify(am);\n const brm = simplify(bm);\n return arm.equals(brm);\n};\n\nexport default areValuesEqual;\n"],"file":"index.js"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "2.1.6",
6
+ "version": "2.1.7",
7
7
  "description": "Math evaluator tool for comparing expressions for equality",
8
8
  "keywords": [
9
9
  "math",
@@ -22,8 +22,8 @@
22
22
  "mathjs": "^7.0.1"
23
23
  },
24
24
  "devDependencies": {
25
- "@pie-lib/test-utils": "^0.2.19"
25
+ "@pie-lib/test-utils": "^0.2.20"
26
26
  },
27
27
  "scripts": {},
28
- "gitHead": "0dc7de2b3469d2d8e9e79dfc7b70d9c878e61298"
28
+ "gitHead": "f81076118e63884db5f5d65a41cff9aad111137e"
29
29
  }
package/src/index.js CHANGED
@@ -6,9 +6,9 @@ const decimalCommaRegex = /,/g;
6
6
  const decimalRegex = /\.|,/g;
7
7
  const decimalWithThousandSeparatorNumberRegex = /^(?!0+\.00)(?=.{1,9}(\.|$))(?!0(?!\.))\d{1,3}(,\d{3})*(\.\d+)?$/;
8
8
 
9
- const rationalizeAllPossibleSubNodes = expression => rationalize(mathjs.parse(expression));
10
- const rationalize = tree => {
11
- const transformedTree = tree.transform(node => {
9
+ const rationalizeAllPossibleSubNodes = (expression) => rationalize(mathjs.parse(expression));
10
+ const rationalize = (tree) => {
11
+ const transformedTree = tree.transform((node) => {
12
12
  try {
13
13
  const rationalizedNode = mathjs.rationalize(node);
14
14
  return rationalizedNode;
@@ -40,7 +40,7 @@ const latexToAstOpts = {
40
40
  }
41
41
  return 0;
42
42
  },
43
- unknownCommandBehavior: 'passthrough'
43
+ unknownCommandBehavior: 'passthrough',
44
44
  };
45
45
 
46
46
  const astToTextOpts = {
@@ -50,8 +50,8 @@ const astToTextOpts = {
50
50
  },
51
51
  '%': function(operands) {
52
52
  return `percent(${operands[0]})`;
53
- }
54
- }
53
+ },
54
+ },
55
55
  };
56
56
 
57
57
  export const latexToText = (latex, extraOtps = {}) => {
@@ -79,7 +79,7 @@ function shouldRationalizeEntireTree(tree) {
79
79
 
80
80
  // we need to iterate the entire tree to check for some conditions that might make rationalization impossible
81
81
  try {
82
- tree.traverse(node => {
82
+ tree.traverse((node) => {
83
83
  // if we have a variable as an exponent for power operation, we should not rationalize
84
84
  // try to see if there are power operations with variable exponents
85
85
  if (node.type === 'OperatorNode' && node.fn === 'pow') {
@@ -112,10 +112,10 @@ function containsDecimal(expression = '') {
112
112
  }
113
113
  const SIMPLIFY_RULES = [
114
114
  { l: 'n1^(1/n2)', r: 'nthRoot(n1, n2)' },
115
- { l: 'sqrt(n1)', r: 'nthRoot(n1, 2)' }
115
+ { l: 'sqrt(n1)', r: 'nthRoot(n1, 2)' },
116
116
  ];
117
117
 
118
- const simplify = v => mathjs.simplify(v, SIMPLIFY_RULES.concat(mathjs.simplify.rules)); //.concat(SIMPLIFY_RULES));
118
+ const simplify = (v) => mathjs.simplify(v, SIMPLIFY_RULES.concat(mathjs.simplify.rules)); //.concat(SIMPLIFY_RULES));
119
119
 
120
120
  const areValuesEqual = (valueOne, valueTwo, options = {}) => {
121
121
  const {
@@ -123,7 +123,7 @@ const areValuesEqual = (valueOne, valueTwo, options = {}) => {
123
123
  // regardless of mathematical correctness
124
124
  allowDecimals,
125
125
  isLatex, // if the passed in values are latex, they need to be escaped
126
- inverse // returns inverse for the comparison result
126
+ inverse, // returns inverse for the comparison result
127
127
  } = options;
128
128
 
129
129
  let valueOneToUse = valueOne;
@@ -146,12 +146,8 @@ const areValuesEqual = (valueOne, valueTwo, options = {}) => {
146
146
  const preparedValueOne = prepareExpression(valueOneToUse, isLatex, allowDecimals);
147
147
  const preparedValueTwo = prepareExpression(valueTwoToUse, isLatex, allowDecimals);
148
148
 
149
- let one = shouldRationalizeEntireTree(preparedValueOne)
150
- ? mathjs.rationalize(preparedValueOne)
151
- : preparedValueOne;
152
- let two = shouldRationalizeEntireTree(preparedValueTwo)
153
- ? mathjs.rationalize(preparedValueTwo)
154
- : preparedValueTwo;
149
+ let one = shouldRationalizeEntireTree(preparedValueOne) ? mathjs.rationalize(preparedValueOne) : preparedValueOne;
150
+ let two = shouldRationalizeEntireTree(preparedValueTwo) ? mathjs.rationalize(preparedValueTwo) : preparedValueTwo;
155
151
 
156
152
  one = simplify(one);
157
153
  two = simplify(two);