efront 4.35.8 → 4.36.1
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/#/345/233/275/351/231/205/345/214/226.yml +3 -0
- package/coms/basic/ASN1.js +1 -1
- package/coms/basic/JSAM.js +2 -2
- package/coms/basic/decodeLZW.js +35 -22
- package/coms/basic/math.js +110 -32
- package/coms/basic/math.md +118 -40
- package/coms/basic/math_test.xht +10 -0
- package/coms/basic/refilm_decode.js +20 -18
- package/coms/basic/refilm_parse.js +6 -7
- package/coms/basic/strings.js +43 -6
- package/coms/basic_/JSON.js +5 -1
- package/coms/compile/Html.js +21 -1
- package/coms/compile/Program.js +9 -3
- package/coms/compile/common.js +37 -2
- package/coms/compile/common_test.js +48 -0
- package/coms/compile/namekill.js +13 -0
- package/coms/compile/powermap.js +1 -1
- package/coms/compile/scanner2.js +8 -2
- package/coms/compile//347/256/227/345/274/217.js +82 -26
- package/coms/compile//347/256/227/345/274/217_test.js +6 -1
- package/coms/compile//347/264/240/351/246/250.js +1 -1
- package/coms/zimoli/arriswise.js +7 -3
- package/coms/zimoli/list.js +1 -2
- package/package.json +1 -1
- package/public/efront.js +1 -1
- package/public//346/226/207/344/273/266/347/263/273/347/273/237//344/270/273/351/241/265.jsp +2 -2
|
@@ -6,15 +6,18 @@ const {
|
|
|
6
6
|
createString,
|
|
7
7
|
} = require("./common");
|
|
8
8
|
var powermap = require("./powermap");
|
|
9
|
-
var number_rep = /^([+-]?[\d\.]+)(?:e([+-]?\d+))
|
|
9
|
+
var number_rep = /^([+-]?[\d\.]+)(?:e([+-]?\d+))?([ijkn]*)$/;
|
|
10
|
+
var 三角函数 = `sin,cos,tan,cot,sec,csc,arcsin,arccos,arctan,arccot,arcsec,arccsc`.split(',');
|
|
10
11
|
class Math extends Program {
|
|
11
|
-
number_reg = /^(\d+(?:\.\d+){0,2}|(?:\.\d+){1,2}|(?:\d+\.){1,3})\.*(?:e[+-]?\d+)
|
|
12
|
+
number_reg = /^(\d+(?:\.\d+){0,2}|(?:\.\d+){1,2}|(?:\d+\.){1,3})\.*(?:e[+-]?\d+)?[ijkn]*$/;
|
|
12
13
|
powermap = Object.assign({}, powermap);
|
|
13
14
|
value_reg = /^(false|true|null|Infinity|NaN|undefined|eval|this|arguments)$/;
|
|
15
|
+
straps = 三角函数;
|
|
14
16
|
constructor() {
|
|
15
17
|
super();
|
|
16
18
|
var pmap = this.powermap;
|
|
17
19
|
pmap["+-"] = pmap["-+"] = powermap["+"];
|
|
20
|
+
pmap["+."] = powermap["?."];
|
|
18
21
|
pmap["×"] = pmap[".*"] = powermap["*"];
|
|
19
22
|
pmap["≈"] = pmap["~="] = pmap["=="];
|
|
20
23
|
pmap["≉"] = pmap["!≈"] = pmap["!~="] = pmap["~!="] = pmap["=="];
|
|
@@ -23,7 +26,13 @@ class Math extends Program {
|
|
|
23
26
|
pmap["^"] = powermap["**"];
|
|
24
27
|
pmap["_"] = powermap["?."];
|
|
25
28
|
pmap["'"] = powermap["?."];
|
|
26
|
-
|
|
29
|
+
var newp = powermap['new'];
|
|
30
|
+
三角函数.forEach(k => {
|
|
31
|
+
pmap[k] = newp;
|
|
32
|
+
})
|
|
33
|
+
pmap["$"] = pmap["@"] = powermap["!"];
|
|
34
|
+
this.stamps.push('\\', '_', "@", "$");
|
|
35
|
+
this.scopes.push(["|", "|"])
|
|
27
36
|
}
|
|
28
37
|
}
|
|
29
38
|
Math.prototype.createScoped = createScoped;
|
|
@@ -49,10 +58,10 @@ var make = function (pt, left, right) {
|
|
|
49
58
|
if (left) left = uncup(left);
|
|
50
59
|
if (right) right = uncup(right);
|
|
51
60
|
if (isNull(left)) {
|
|
52
|
-
return { [pt]: right instanceof Array ? ["", right] : right };
|
|
61
|
+
return { [pt]: right instanceof Array && !right.iscup ? ["", right] : right };
|
|
53
62
|
}
|
|
54
63
|
if (isNull(right)) {
|
|
55
|
-
return { [pt]: [left] };
|
|
64
|
+
return { [pt]: left instanceof Array && left.iscup ? left : [left] };
|
|
56
65
|
}
|
|
57
66
|
if (left[pt]) {
|
|
58
67
|
left[pt].push(right);
|
|
@@ -94,20 +103,29 @@ var getRows = function (code) {
|
|
|
94
103
|
var trs = [];
|
|
95
104
|
var maxsize = 0;
|
|
96
105
|
for (var r of rows) {
|
|
97
|
-
var row =
|
|
106
|
+
var row = getArgs(r);
|
|
98
107
|
maxsize = row.length;
|
|
99
108
|
trs.push(row);
|
|
100
109
|
}
|
|
101
110
|
rows.maxsize = maxsize;
|
|
111
|
+
trs.iscup = true;
|
|
102
112
|
return trs;
|
|
103
113
|
}
|
|
104
114
|
var getArgs = function (a) {
|
|
105
|
-
|
|
115
|
+
var res = [];
|
|
116
|
+
res.iscup = true;
|
|
117
|
+
split(a, ',').forEach(a => {
|
|
106
118
|
var cells = createExpressList(a);
|
|
107
119
|
if (!cells[cells.length - 1]?.first) cells.pop();
|
|
108
|
-
if (cells.length === 1)
|
|
109
|
-
|
|
120
|
+
if (cells.length === 1) {
|
|
121
|
+
res.push(toFlat(cells[0]));
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
cells.map(toFlat).forEach(a => {
|
|
125
|
+
res.push(a);
|
|
126
|
+
});
|
|
110
127
|
});
|
|
128
|
+
return res;
|
|
111
129
|
}
|
|
112
130
|
var uncup = function (cup) {
|
|
113
131
|
if (cup.iscup && cup.length <= 1) cup = cup[0];
|
|
@@ -142,7 +160,8 @@ var toFlat = function (exp) {
|
|
|
142
160
|
for (var cx = 0, dx = exp.length; cx < dx; cx++) {
|
|
143
161
|
var e = exp[cx];
|
|
144
162
|
if (e.type & (SPACE | COMMENT)) continue;
|
|
145
|
-
if (e.type & STAMP) {
|
|
163
|
+
if (e.type & (STAMP | STRAP)) {
|
|
164
|
+
if (e.text === '.') e.text = "+.";
|
|
146
165
|
var p = pmap[e.text] || 0;
|
|
147
166
|
if ((!p0 || p > p0 || !left.length) && !e.ion) {
|
|
148
167
|
cache.push(left, e.text, p0);
|
|
@@ -183,6 +202,10 @@ var toFlat = function (exp) {
|
|
|
183
202
|
else if (f instanceof Object) {
|
|
184
203
|
left.push(make("", f, args));
|
|
185
204
|
}
|
|
205
|
+
else if (/\d\.$/.test(f) && args.length === 1 && args[0]['/']) {
|
|
206
|
+
f = f.replace(/\.$/, '');
|
|
207
|
+
left.push(make("+.", f, args))
|
|
208
|
+
}
|
|
186
209
|
else {
|
|
187
210
|
left.push({ [f]: args });
|
|
188
211
|
}
|
|
@@ -213,25 +236,32 @@ var toFlat = function (exp) {
|
|
|
213
236
|
else {
|
|
214
237
|
args.push(ions);
|
|
215
238
|
}
|
|
216
|
-
left = [make("
|
|
239
|
+
left = [make("^*", left, args)];
|
|
217
240
|
}
|
|
218
241
|
else {
|
|
219
|
-
|
|
242
|
+
if (ions === '*' && left[0]["["] && left.length === 1) {
|
|
243
|
+
ions = "H";
|
|
244
|
+
}
|
|
245
|
+
left = [make("^*", left, ions)];
|
|
220
246
|
}
|
|
221
247
|
}
|
|
222
248
|
else {
|
|
223
249
|
var args = getArgs(e);
|
|
224
250
|
// 下标
|
|
225
|
-
left = [make("_", left,
|
|
251
|
+
left = [make("_", left, args)];
|
|
226
252
|
}
|
|
227
253
|
left.iscup = true;
|
|
228
254
|
}
|
|
229
255
|
else {
|
|
230
256
|
// 矩阵
|
|
231
|
-
left.push(getRows(e));
|
|
257
|
+
left.push(make("[", null, getRows(e)));
|
|
232
258
|
}
|
|
233
259
|
}
|
|
234
260
|
else if (e.entry === "{") {
|
|
261
|
+
left.push(make("{", null, getRows(e)));
|
|
262
|
+
}
|
|
263
|
+
else if (e.entry === '|') {
|
|
264
|
+
left.push(make("^|", getRows(e)));
|
|
235
265
|
}
|
|
236
266
|
}
|
|
237
267
|
else {
|
|
@@ -241,9 +271,9 @@ var toFlat = function (exp) {
|
|
|
241
271
|
}
|
|
242
272
|
if (e.isdigit) a: {
|
|
243
273
|
var et = e.text;
|
|
244
|
-
var [, a, e10] = number_rep.exec(et);
|
|
274
|
+
var [, a, e10, s] = number_rep.exec(et);
|
|
245
275
|
var b = a.split('.');
|
|
246
|
-
if (b.length > 2
|
|
276
|
+
if (b.length > 2) {
|
|
247
277
|
var nrep = b[2] || b[1];
|
|
248
278
|
var npre = b[0];
|
|
249
279
|
if (b[2]) {
|
|
@@ -257,15 +287,29 @@ var toFlat = function (exp) {
|
|
|
257
287
|
if (String(+nrep) === nrep) nrep = +nrep;
|
|
258
288
|
var v = [npre, nrep];
|
|
259
289
|
if (b.length > (b[2] ? 4 : b[1] ? 3 : 2)) v.push(b.slice(b[2] ? 3 : b[1] ? 2 : 1, b.length).join('.') + ".");
|
|
260
|
-
else if (e10) v.push('');
|
|
290
|
+
else if (e10 || s) v.push('');
|
|
261
291
|
if (e10) {
|
|
262
292
|
if (String(+e10) === e10) e10 = +e10;
|
|
263
293
|
v.push(e10);
|
|
264
294
|
}
|
|
295
|
+
else if (s) v.push('');
|
|
296
|
+
if (s) v.push(s);
|
|
265
297
|
v = { "..": v };
|
|
266
298
|
left.push(v);
|
|
267
299
|
continue;
|
|
268
300
|
}
|
|
301
|
+
else if (s || e10) {
|
|
302
|
+
if (String(+a) === a) a = +a;
|
|
303
|
+
var v = [a];
|
|
304
|
+
if (e10) {
|
|
305
|
+
if (String(+e10) === e10) e10 = +e10;
|
|
306
|
+
v.push(e10);
|
|
307
|
+
}
|
|
308
|
+
if (s) v.push(s);
|
|
309
|
+
v = { ".": v };
|
|
310
|
+
left.push(v);
|
|
311
|
+
continue;
|
|
312
|
+
}
|
|
269
313
|
var v = +a;
|
|
270
314
|
if (/^\+/.test(et)) {
|
|
271
315
|
if (String(v) !== a.slice(1)) break a;
|
|
@@ -275,7 +319,11 @@ var toFlat = function (exp) {
|
|
|
275
319
|
left.push(v);
|
|
276
320
|
continue;
|
|
277
321
|
}
|
|
278
|
-
|
|
322
|
+
var text = e.text;
|
|
323
|
+
if (e.type === QUOTED) {
|
|
324
|
+
text = strings.decode(text);
|
|
325
|
+
}
|
|
326
|
+
left.push(text);
|
|
279
327
|
}
|
|
280
328
|
}
|
|
281
329
|
if (!left.length) {
|
|
@@ -290,29 +338,37 @@ var toFlat = function (exp) {
|
|
|
290
338
|
}
|
|
291
339
|
return uncup(left);
|
|
292
340
|
}
|
|
293
|
-
|
|
294
|
-
function main(text) {
|
|
295
|
-
var code = scanner2(text, math);
|
|
341
|
+
function seprate(code, addrow) {
|
|
296
342
|
var rows = split(code, ';');
|
|
297
343
|
var res = [];
|
|
298
344
|
res.iscup = true;
|
|
299
345
|
for (var r of rows) {
|
|
300
346
|
var cells = split(r, ',');
|
|
347
|
+
var cup = addrow ? res : [];
|
|
301
348
|
for (var c of cells) {
|
|
302
349
|
var exps = createExpressList(c);
|
|
303
350
|
for (var e of exps) {
|
|
304
351
|
var a = toFlat(e);
|
|
305
352
|
if (!a) continue;
|
|
306
353
|
if (a.iscup) {
|
|
307
|
-
for (var b of a)
|
|
354
|
+
if (addrow) for (var b of a) cup.push(b, ' ');
|
|
355
|
+
else for (var b of a) cup.push(a);
|
|
308
356
|
}
|
|
309
|
-
else
|
|
357
|
+
else if (addrow) cup.push(a, ' ');
|
|
358
|
+
else cup.push(a);
|
|
310
359
|
}
|
|
311
|
-
if (
|
|
360
|
+
if (addrow && cup.length) cup[res.length - 1] = ', ';
|
|
361
|
+
}
|
|
362
|
+
if (cup.length) {
|
|
363
|
+
if (addrow) cup[res.length - 1] = '\r\n';
|
|
364
|
+
else res.push(cup.length === 1 ? cup[0] : cup);
|
|
312
365
|
}
|
|
313
|
-
if (res.length) res[res.length - 1] = '\r\n';
|
|
314
366
|
}
|
|
315
|
-
res.pop();
|
|
367
|
+
if (addrow) res.pop();
|
|
316
368
|
return uncup(res);
|
|
317
369
|
}
|
|
370
|
+
function main(text) {
|
|
371
|
+
var code = scanner2(text, math);
|
|
372
|
+
return seprate(code, true);
|
|
373
|
+
}
|
|
318
374
|
main.MathScript = Math;
|
|
@@ -214,7 +214,7 @@ var wrapColor = function (k) {
|
|
|
214
214
|
var f = color[k];
|
|
215
215
|
macros[k] = function (c) {
|
|
216
216
|
if (color.isColor(c)) return f(...arguments);
|
|
217
|
-
return `${k}(${Array.
|
|
217
|
+
return `${k}(${Array.prototype.join.call(arguments, ',')})`;
|
|
218
218
|
};
|
|
219
219
|
};
|
|
220
220
|
|
package/coms/zimoli/arriswise.js
CHANGED
|
@@ -33,12 +33,15 @@ var replaceArg = function (arg) {
|
|
|
33
33
|
}
|
|
34
34
|
return arg;
|
|
35
35
|
};
|
|
36
|
-
function build(func, argNames, argsArr) {
|
|
36
|
+
function build(func, argNames, argsArr, isWrapper) {
|
|
37
37
|
var newf = String(func).replace(regexps, rep);
|
|
38
|
-
|
|
38
|
+
if (isWrapper) newf = newf.replace(/^\s*function[\s\S]*?\{([\s\S]*)\}\s*$/, "$1");
|
|
39
|
+
else newf = "return " + newf;
|
|
40
|
+
return Function.apply(null, argNames.map(replaceArg).concat(newf))
|
|
39
41
|
.apply(this, argsArr.map(replaceArg));
|
|
40
42
|
}
|
|
41
43
|
var arriswise = function (func, args = []) {
|
|
44
|
+
var isWrapper = func === args[args.length - 3];
|
|
42
45
|
if (isFunction(args.slice)) {
|
|
43
46
|
// 兼容老方法
|
|
44
47
|
var argArr = args.slice(args.length - 3 >>> 1);
|
|
@@ -46,8 +49,9 @@ var arriswise = function (func, args = []) {
|
|
|
46
49
|
return build.call(arguments[2] || this, func,
|
|
47
50
|
args.slice(0, args.length - 3 >>> 1),
|
|
48
51
|
argArr,
|
|
52
|
+
isWrapper
|
|
49
53
|
);
|
|
50
54
|
}
|
|
51
55
|
var allArgumentsNames = args[args.length - 1];
|
|
52
|
-
return build.call(this, func, allArgumentsNames, [].slice.call(args, 0));
|
|
56
|
+
return build.call(this, func, allArgumentsNames, [].slice.call(args, 0), isWrapper);
|
|
53
57
|
};
|
package/coms/zimoli/list.js
CHANGED
|
@@ -650,8 +650,7 @@ function ylist(container, generator, $Y) {
|
|
|
650
650
|
var allArgumentsNames = arguments[arguments.length - 1];
|
|
651
651
|
if (allArgumentsNames.done) return ylist;
|
|
652
652
|
allArgumentsNames.done = true;
|
|
653
|
-
var xlist = arriswise.call(this, arguments[arguments.length - 3], arguments)
|
|
654
|
-
|
|
653
|
+
var xlist = arriswise.call(this, arguments[arguments.length - 3], arguments);
|
|
655
654
|
var getGeneratorFromArray = function (source) {
|
|
656
655
|
return function (index) {
|
|
657
656
|
if (index >= source.length || index < 0) return null;
|