@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 +18 -165
- package/lib/index.js +15 -11
- package/lib/index.js.map +1 -1
- package/package.json +3 -3
- package/src/index.js +12 -16
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
|
+
## [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.
|
|
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
|
-
|
|
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
|
-
|
|
55
|
-
|
|
40
|
+
- major version bump ([78da9d5](https://github.com/pie-framework/pie-lib/commit/78da9d5))
|
|
56
41
|
|
|
57
42
|
### BREAKING CHANGES
|
|
58
43
|
|
|
59
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
263
|
-
|
|
264
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
78
|
-
var at = new _mathExpressions["default"].converters.astToTextObj(_objectSpread({}, astToTextOpts,
|
|
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,
|
|
88
|
-
var at = new _mathExpressions["default"].converters.astToTextObj(_objectSpread({}, astToTextOpts,
|
|
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
|
+
"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.
|
|
25
|
+
"@pie-lib/test-utils": "^0.2.20"
|
|
26
26
|
},
|
|
27
27
|
"scripts": {},
|
|
28
|
-
"gitHead": "
|
|
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
|
-
|
|
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);
|