efront 4.35.4 → 4.35.6
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/apps/_index.html +41 -41
- package/apps/blank/index.html +20 -20
- package/apps/noice/index.html +42 -42
- package/apps/pay/paypal.jsp +0 -0
- package/apps/pay/wxpay.jsp +32 -0
- package/apps/pivot/dht/rent.html +14 -0
- package/apps/pivot/dht/rent.js +148 -0
- package/apps/pivot/dht/rent.less +46 -0
- package/apps/pivot/home/desktop.xht +0 -0
- package/apps/pivot/menu.yml +6 -1
- package/apps/pivot/shop/goods/list.xht +183 -0
- package/apps/pivot/shop/home.xht +20 -0
- package/apps/pivot/shop/mind/list.xht +1 -0
- package/apps/pivot/shop/order/create.xht +49 -0
- package/apps/pivot/shop/order/list.xht +1 -0
- package/apps/pivot/shop/paypal.jsp +23 -0
- package/apps/pivot/soft/list.html +0 -0
- package/apps/pivot/soft/list.js +9 -0
- package/apps/pivot/soft/list.less +0 -0
- package/apps/pivot//344/270/273/351/241/265.html +42 -42
- package/coms/7z_temp/Java.js +93 -0
- package/coms/7z_temp/LzmaBench.java +392 -0
- package/coms/7z_temp/read-from-java-code.js +28 -0
- package/coms/7z_temp//350/257/264/346/230/216.md +1 -0
- package/coms/basic/JSAM.js +259 -259
- package/coms/basic/JSAM_test.js +3 -5
- package/coms/basic/check.js +42 -42
- package/coms/basic/color.js +696 -696
- package/coms/basic/crc.js +39 -39
- package/coms/basic/getIndexFromOrderedArray.js +39 -39
- package/coms/basic/isObject.js +3 -3
- package/coms/basic/keys.js +4 -4
- package/coms/basic/lazy.js +78 -78
- package/coms/basic/math.js +7 -1
- package/coms/basic/math.md +11 -0
- package/coms/basic/refilm.js +96 -96
- package/coms/basic/saveToOrderedArray.js +11 -11
- package/coms/basic/strings.js +7 -5
- package/coms/basic_/&pget.js +1 -0
- package/coms/basic_/&pset.js +1 -0
- package/coms/basic_/Proxy.js +6 -0
- package/coms/basic_/Reflect.js +55 -0
- package/coms/compile/Html.js +15 -7
- package/coms/compile/Program.js +3 -1
- package/coms/compile/autoeval.js +26 -7
- package/coms/compile/autoeval_test.js +9 -0
- package/coms/compile/bracket.js +51 -0
- package/coms/compile/bracket_test.js +9 -0
- package/coms/compile/createvm.js +35 -0
- package/coms/compile/createvm_test.js +7 -0
- package/coms/compile/scanner.js +653 -653
- package/coms/compile/scanner2.js +24 -1
- package/coms/compile//347/264/240/351/246/250.js +4 -4
- package/coms/docs/getMimeData_test.js +19 -19
- package/coms/docs/md5.js +173 -173
- package/coms/frame/top.less +190 -190
- package/coms/pivot/DB.js +9 -0
- package/coms/pivot/paypal-var.js +1 -0
- package/coms/pivot//345/225/206/345/223/201.js +1 -0
- package/coms/zimoli/AudioContext_test.html +5 -5
- package/coms/zimoli/AudioContext_test.js +92 -92
- package/coms/zimoli/AudioContext_test.less +114 -114
- package/coms/zimoli/alert_test.js +11 -11
- package/coms/zimoli/dispatch.js +50 -50
- package/coms/zimoli/extendTouchEvent.js +8 -8
- package/coms/zimoli/fullscreen.js +52 -52
- package/coms/zimoli/gallery.less +13 -13
- package/coms/zimoli/gallery_test.html +2 -2
- package/coms/zimoli/gallery_test.js +14 -14
- package/coms/zimoli/gallery_test.less +17 -17
- package/coms/zimoli/getChanged.js +7 -7
- package/coms/zimoli/getChanges.js +13 -13
- package/coms/zimoli/lattice.js +109 -109
- package/coms/zimoli/lattice_test.less +23 -23
- package/coms/zimoli/picture.less +71 -71
- package/coms/zimoli/refilm_test.html +41 -41
- package/coms/zimoli/refilm_test.less +102 -102
- package/coms/zimoli/xml.js +131 -131
- package/data/keystore/cross-cert.pem +21 -21
- package/data/keystore/cross-key.pem +27 -27
- 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
- /package/apps/pivot/{tick → ticket}/list.js +0 -0
package/coms/basic/crc.js
CHANGED
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
function table(sign, table = new Array(256)) {
|
|
3
|
-
var c;
|
|
4
|
-
for (var n = 0; n < 256; n++) {
|
|
5
|
-
c = n;
|
|
6
|
-
c = c & 1 ? sign ^ c >>> 1 : c >>> 1;
|
|
7
|
-
c = c & 1 ? sign ^ c >>> 1 : c >>> 1;
|
|
8
|
-
c = c & 1 ? sign ^ c >>> 1 : c >>> 1;
|
|
9
|
-
c = c & 1 ? sign ^ c >>> 1 : c >>> 1;
|
|
10
|
-
c = c & 1 ? sign ^ c >>> 1 : c >>> 1;
|
|
11
|
-
c = c & 1 ? sign ^ c >>> 1 : c >>> 1;
|
|
12
|
-
c = c & 1 ? sign ^ c >>> 1 : c >>> 1;
|
|
13
|
-
c = c & 1 ? sign ^ c >>> 1 : c >>> 1;
|
|
14
|
-
table[n] = c;
|
|
15
|
-
}
|
|
16
|
-
return table;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
function crc(bstr, seed) {
|
|
20
|
-
var C = seed ^ -1,
|
|
21
|
-
L = bstr.length - 1;
|
|
22
|
-
for (var i = 0; i < L;) {
|
|
23
|
-
C = C >>> 8 ^ T[(C ^ bstr[i++]) & 0xFF];
|
|
24
|
-
C = C >>> 8 ^ T[(C ^ bstr[i++]) & 0xFF];
|
|
25
|
-
}
|
|
26
|
-
if (i === L) C = C >>> 8 ^ T[(C ^ bstr[i]) & 0xFF];
|
|
27
|
-
return C ^ -1;
|
|
28
|
-
}
|
|
29
|
-
crc.string = function (str) {
|
|
30
|
-
var sum = [];
|
|
31
|
-
for (var i in str) sum[i] = str.charCodeAt(i);
|
|
32
|
-
return crc(sum);
|
|
33
|
-
}
|
|
34
|
-
var sign = parseInt("-52l3vk", 36);
|
|
35
|
-
var T = table(sign);
|
|
36
|
-
crc.table = T;
|
|
37
|
-
crc.init = function (sign) {
|
|
38
|
-
table(sign, T);
|
|
39
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
function table(sign, table = new Array(256)) {
|
|
3
|
+
var c;
|
|
4
|
+
for (var n = 0; n < 256; n++) {
|
|
5
|
+
c = n;
|
|
6
|
+
c = c & 1 ? sign ^ c >>> 1 : c >>> 1;
|
|
7
|
+
c = c & 1 ? sign ^ c >>> 1 : c >>> 1;
|
|
8
|
+
c = c & 1 ? sign ^ c >>> 1 : c >>> 1;
|
|
9
|
+
c = c & 1 ? sign ^ c >>> 1 : c >>> 1;
|
|
10
|
+
c = c & 1 ? sign ^ c >>> 1 : c >>> 1;
|
|
11
|
+
c = c & 1 ? sign ^ c >>> 1 : c >>> 1;
|
|
12
|
+
c = c & 1 ? sign ^ c >>> 1 : c >>> 1;
|
|
13
|
+
c = c & 1 ? sign ^ c >>> 1 : c >>> 1;
|
|
14
|
+
table[n] = c;
|
|
15
|
+
}
|
|
16
|
+
return table;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function crc(bstr, seed) {
|
|
20
|
+
var C = seed ^ -1,
|
|
21
|
+
L = bstr.length - 1;
|
|
22
|
+
for (var i = 0; i < L;) {
|
|
23
|
+
C = C >>> 8 ^ T[(C ^ bstr[i++]) & 0xFF];
|
|
24
|
+
C = C >>> 8 ^ T[(C ^ bstr[i++]) & 0xFF];
|
|
25
|
+
}
|
|
26
|
+
if (i === L) C = C >>> 8 ^ T[(C ^ bstr[i]) & 0xFF];
|
|
27
|
+
return C ^ -1;
|
|
28
|
+
}
|
|
29
|
+
crc.string = function (str) {
|
|
30
|
+
var sum = [];
|
|
31
|
+
for (var i in str) sum[i] = str.charCodeAt(i);
|
|
32
|
+
return crc(sum);
|
|
33
|
+
}
|
|
34
|
+
var sign = parseInt("-52l3vk", 36);
|
|
35
|
+
var T = table(sign);
|
|
36
|
+
crc.table = T;
|
|
37
|
+
crc.init = function (sign) {
|
|
38
|
+
table(sign, T);
|
|
39
|
+
};
|
|
40
40
|
module.exports = crc;
|
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
|
|
2
|
-
var getValue = function (o) {
|
|
3
|
-
return isObject(o) && "value" in o ? o.value : o
|
|
4
|
-
};
|
|
5
|
-
var arrayIsLE = function (a, b) {
|
|
6
|
-
var a_length = a.length, b_length = b.length;
|
|
7
|
-
var total = a_length < b_length ? a_length : b_length;
|
|
8
|
-
for (var cx = 0, dx = total; cx < dx; cx++) {
|
|
9
|
-
var a0 = a[cx];
|
|
10
|
-
var b0 = b[cx];
|
|
11
|
-
if (a0 !== b0) return a0 <= b0;
|
|
12
|
-
}
|
|
13
|
-
return a_length <= b_length;
|
|
14
|
-
};
|
|
15
|
-
var isArray = Array.isArray || (a => a instanceof Array);
|
|
16
|
-
var defaultIsLE = (sample, search) => isArray(sample) && isArray(search) ? arrayIsLE(sample, search) : getValue(sample) <= getValue(search);
|
|
17
|
-
/**
|
|
18
|
-
* 读取元素在有序数组中的位置
|
|
19
|
-
* @param {Array} orderArray
|
|
20
|
-
* @param {string|number} searchItem
|
|
21
|
-
*/
|
|
22
|
-
module.exports = function (orderArray, searchItem, isLE = typeof searchItem === "function" ? searchItem : defaultIsLE, findEqual = true) {
|
|
23
|
-
for (var cx = 0, dx = orderArray.length, ci = cx + dx >>> 1; cx < dx; ci = cx + dx >>> 1) {
|
|
24
|
-
var orderItem = orderArray[ci];
|
|
25
|
-
if (isLE(orderItem, searchItem)) {
|
|
26
|
-
cx = ci + 1;
|
|
27
|
-
} else {
|
|
28
|
-
dx = ci;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
if (findEqual && dx <= orderArray.length) {
|
|
32
|
-
var index = dx - 1;
|
|
33
|
-
while (index >= 0 && isLE(searchItem, orderArray[index])) {
|
|
34
|
-
if (orderArray[index] === searchItem) return index;
|
|
35
|
-
index--;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return dx - 1;
|
|
39
|
-
};
|
|
1
|
+
|
|
2
|
+
var getValue = function (o) {
|
|
3
|
+
return isObject(o) && "value" in o ? o.value : o
|
|
4
|
+
};
|
|
5
|
+
var arrayIsLE = function (a, b) {
|
|
6
|
+
var a_length = a.length, b_length = b.length;
|
|
7
|
+
var total = a_length < b_length ? a_length : b_length;
|
|
8
|
+
for (var cx = 0, dx = total; cx < dx; cx++) {
|
|
9
|
+
var a0 = a[cx];
|
|
10
|
+
var b0 = b[cx];
|
|
11
|
+
if (a0 !== b0) return a0 <= b0;
|
|
12
|
+
}
|
|
13
|
+
return a_length <= b_length;
|
|
14
|
+
};
|
|
15
|
+
var isArray = Array.isArray || (a => a instanceof Array);
|
|
16
|
+
var defaultIsLE = (sample, search) => isArray(sample) && isArray(search) ? arrayIsLE(sample, search) : getValue(sample) <= getValue(search);
|
|
17
|
+
/**
|
|
18
|
+
* 读取元素在有序数组中的位置
|
|
19
|
+
* @param {Array} orderArray
|
|
20
|
+
* @param {string|number} searchItem
|
|
21
|
+
*/
|
|
22
|
+
module.exports = function (orderArray, searchItem, isLE = typeof searchItem === "function" ? searchItem : defaultIsLE, findEqual = true) {
|
|
23
|
+
for (var cx = 0, dx = orderArray.length, ci = cx + dx >>> 1; cx < dx; ci = cx + dx >>> 1) {
|
|
24
|
+
var orderItem = orderArray[ci];
|
|
25
|
+
if (isLE(orderItem, searchItem)) {
|
|
26
|
+
cx = ci + 1;
|
|
27
|
+
} else {
|
|
28
|
+
dx = ci;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
if (findEqual && dx <= orderArray.length) {
|
|
32
|
+
var index = dx - 1;
|
|
33
|
+
while (index >= 0 && isLE(searchItem, orderArray[index])) {
|
|
34
|
+
if (orderArray[index] === searchItem) return index;
|
|
35
|
+
index--;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return dx - 1;
|
|
39
|
+
};
|
package/coms/basic/isObject.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// 用Object.create(null)创建的对象不继承Object,所以用 o instanceof Object可能会出错
|
|
2
|
-
module.exports = function isObject(o) {
|
|
3
|
-
return o !== null && typeof o === 'object';
|
|
1
|
+
// 用Object.create(null)创建的对象不继承Object,所以用 o instanceof Object可能会出错
|
|
2
|
+
module.exports = function isObject(o) {
|
|
3
|
+
return o !== null && typeof o === 'object';
|
|
4
4
|
}
|
package/coms/basic/keys.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
function keysFrom() {
|
|
2
|
-
var args = Array.prototype.slice.call(arguments, 0, arguments.length);
|
|
3
|
-
args.unshift(Object.create(null));
|
|
4
|
-
return Object.keys(extendIfNeeded.apply(null, args));
|
|
1
|
+
function keysFrom() {
|
|
2
|
+
var args = Array.prototype.slice.call(arguments, 0, arguments.length);
|
|
3
|
+
args.unshift(Object.create(null));
|
|
4
|
+
return Object.keys(extendIfNeeded.apply(null, args));
|
|
5
5
|
}
|
package/coms/basic/lazy.js
CHANGED
|
@@ -1,79 +1,79 @@
|
|
|
1
|
-
// 1.如果time大于0,传的和函数会延迟time执行,如果期间有新的调用,前一个调用会被忽略
|
|
2
|
-
// 2.如果time小于0,传入的函数会立即执行,并忽略-time内的连续调用,time时间后触发最后一次调用
|
|
3
|
-
// 如果time传false或0 使用requestAnimationFrame代替setTimeout按第1步执行
|
|
4
|
-
// 如果time传null或undefined或NaN使用requestAnimationFrame代替setTimeout按第2步执行
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* @param {Function} run 主程序
|
|
8
|
-
* @param {number|undefined} time 间隔
|
|
9
|
-
* @param {any} ret 指定调用结束后返回的结果
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
function lazy(run, time, ret) {
|
|
13
|
-
var wait = +time ? setTimeout : requestAnimationFrame;
|
|
14
|
-
var quit = wait === setTimeout ? clearTimeout : cancelAnimationFrame;
|
|
15
|
-
var ing, args, that, id;
|
|
16
|
-
var hire = function () {
|
|
17
|
-
if (!ing) return;
|
|
18
|
-
if (time >= 0) {
|
|
19
|
-
if (ing === true) id = ing = wait(fire, +time / 2);
|
|
20
|
-
else id = wait(fire, +time / 2), ing = -2;
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
id = wait(fire, -time);
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
var fire = function () {
|
|
27
|
-
if (!ing) return;
|
|
28
|
-
if (time >= 0) {
|
|
29
|
-
if (ing === true) {
|
|
30
|
-
id = ing = wait(fire, +time / 2);
|
|
31
|
-
}
|
|
32
|
-
else if (ing > 0) {
|
|
33
|
-
id = wait(fire, +time / 2);
|
|
34
|
-
ing = -1;
|
|
35
|
-
}
|
|
36
|
-
else if (ing === -1) {
|
|
37
|
-
ing = run.apply(that, args);
|
|
38
|
-
if (ing instanceof Promise) ing.then(hire, hire);
|
|
39
|
-
else ing = false;
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
ing = false;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
if (ing === true) {
|
|
47
|
-
ing = run.apply(that, args);
|
|
48
|
-
if (ing instanceof Promise) ing.then(hire, hire);
|
|
49
|
-
else id = ing = wait(fire, -time);
|
|
50
|
-
} else {
|
|
51
|
-
ing = false;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
var exec = function () {
|
|
56
|
-
args = arguments;
|
|
57
|
-
that = this;
|
|
58
|
-
if (ing) return ing = true;
|
|
59
|
-
if (time >= 0) {
|
|
60
|
-
id = ing = wait(fire, +time);
|
|
61
|
-
}
|
|
62
|
-
else if (time < 0) {
|
|
63
|
-
ing = run.apply(that, args);
|
|
64
|
-
if (ing instanceof Promise) ing.then(hire, hire);
|
|
65
|
-
else id = ing = wait(fire, -time);
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
ing = true; id = wait(fire);
|
|
69
|
-
}
|
|
70
|
-
return ret;
|
|
71
|
-
};
|
|
72
|
-
exec.cancel = function () {
|
|
73
|
-
quit(id);
|
|
74
|
-
ing = false;
|
|
75
|
-
id = 0;
|
|
76
|
-
};
|
|
77
|
-
return exec;
|
|
78
|
-
}
|
|
1
|
+
// 1.如果time大于0,传的和函数会延迟time执行,如果期间有新的调用,前一个调用会被忽略
|
|
2
|
+
// 2.如果time小于0,传入的函数会立即执行,并忽略-time内的连续调用,time时间后触发最后一次调用
|
|
3
|
+
// 如果time传false或0 使用requestAnimationFrame代替setTimeout按第1步执行
|
|
4
|
+
// 如果time传null或undefined或NaN使用requestAnimationFrame代替setTimeout按第2步执行
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @param {Function} run 主程序
|
|
8
|
+
* @param {number|undefined} time 间隔
|
|
9
|
+
* @param {any} ret 指定调用结束后返回的结果
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
function lazy(run, time, ret) {
|
|
13
|
+
var wait = +time ? setTimeout : requestAnimationFrame;
|
|
14
|
+
var quit = wait === setTimeout ? clearTimeout : cancelAnimationFrame;
|
|
15
|
+
var ing, args, that, id;
|
|
16
|
+
var hire = function () {
|
|
17
|
+
if (!ing) return;
|
|
18
|
+
if (time >= 0) {
|
|
19
|
+
if (ing === true) id = ing = wait(fire, +time / 2);
|
|
20
|
+
else id = wait(fire, +time / 2), ing = -2;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
id = wait(fire, -time);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
var fire = function () {
|
|
27
|
+
if (!ing) return;
|
|
28
|
+
if (time >= 0) {
|
|
29
|
+
if (ing === true) {
|
|
30
|
+
id = ing = wait(fire, +time / 2);
|
|
31
|
+
}
|
|
32
|
+
else if (ing > 0) {
|
|
33
|
+
id = wait(fire, +time / 2);
|
|
34
|
+
ing = -1;
|
|
35
|
+
}
|
|
36
|
+
else if (ing === -1) {
|
|
37
|
+
ing = run.apply(that, args);
|
|
38
|
+
if (ing instanceof Promise) ing.then(hire, hire);
|
|
39
|
+
else ing = false;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
ing = false;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
if (ing === true) {
|
|
47
|
+
ing = run.apply(that, args);
|
|
48
|
+
if (ing instanceof Promise) ing.then(hire, hire);
|
|
49
|
+
else id = ing = wait(fire, -time);
|
|
50
|
+
} else {
|
|
51
|
+
ing = false;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
var exec = function () {
|
|
56
|
+
args = arguments;
|
|
57
|
+
that = this;
|
|
58
|
+
if (ing) return ing = true;
|
|
59
|
+
if (time >= 0) {
|
|
60
|
+
id = ing = wait(fire, +time);
|
|
61
|
+
}
|
|
62
|
+
else if (time < 0) {
|
|
63
|
+
ing = run.apply(that, args);
|
|
64
|
+
if (ing instanceof Promise) ing.then(hire, hire);
|
|
65
|
+
else id = ing = wait(fire, -time);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
ing = true; id = wait(fire);
|
|
69
|
+
}
|
|
70
|
+
return ret;
|
|
71
|
+
};
|
|
72
|
+
exec.cancel = function () {
|
|
73
|
+
quit(id);
|
|
74
|
+
ing = false;
|
|
75
|
+
id = 0;
|
|
76
|
+
};
|
|
77
|
+
return exec;
|
|
78
|
+
}
|
|
79
79
|
module.exports = lazy;
|
package/coms/basic/math.js
CHANGED
|
@@ -137,6 +137,12 @@ var funcmap = {
|
|
|
137
137
|
abs(a) {
|
|
138
138
|
return `<mo>|</mo>${a}<mo>|</mo>`;
|
|
139
139
|
},
|
|
140
|
+
log(x, n) {
|
|
141
|
+
return `<msub><mo>log</mo>${n}</msub>${x}`
|
|
142
|
+
},
|
|
143
|
+
ln(x){
|
|
144
|
+
return `<mo>ln</mo>${x}`
|
|
145
|
+
},
|
|
140
146
|
"div"(...args) {
|
|
141
147
|
return mo3("÷", args);
|
|
142
148
|
},
|
|
@@ -295,7 +301,7 @@ var br = function () {
|
|
|
295
301
|
function toString(obj, p, deep) {
|
|
296
302
|
if (obj instanceof Array) {
|
|
297
303
|
if (deep == 1 && obj.length === 2 && obj[1].tab) {
|
|
298
|
-
return toString(obj[0], 0, deep) +"</mtd><mtd>"+ obj.slice(1, obj.length).map(a => toString(a, 0, 0)).join("</mtd><mtd>");
|
|
304
|
+
return toString(obj[0], 0, deep) + "</mtd><mtd>" + obj.slice(1, obj.length).map(a => toString(a, 0, 0)).join("</mtd><mtd>");
|
|
299
305
|
}
|
|
300
306
|
deep++;
|
|
301
307
|
var args = obj.map(a => toString(a, deep > 1 ? 0 : p, deep));
|
package/coms/basic/math.md
CHANGED
|
@@ -337,6 +337,17 @@ series(公式主体,n=1,+Infinity)
|
|
|
337
337
|
corner(A);
|
|
338
338
|
corner(BAC);
|
|
339
339
|
```
|
|
340
|
+
* 对数
|
|
341
|
+
```mathscript
|
|
342
|
+
log(x,2);
|
|
343
|
+
log(x,e);
|
|
344
|
+
ln(x);
|
|
345
|
+
```
|
|
346
|
+
```math
|
|
347
|
+
log(x,2);
|
|
348
|
+
log(x,e);
|
|
349
|
+
ln(x);
|
|
350
|
+
```
|
|
340
351
|
|
|
341
352
|
## 希腊字母对照表如下
|
|
342
353
|
按此表中的英文单词命名的变量将自动转换为希腊字母
|
package/coms/basic/refilm.js
CHANGED
|
@@ -1,97 +1,97 @@
|
|
|
1
|
-
function refilm() {
|
|
2
|
-
var [str] = arguments;
|
|
3
|
-
if (str.raw) str = str.raw;
|
|
4
|
-
return refilm_decode.apply(null, [str].concat([].slice.call(arguments, 1)));
|
|
5
|
-
}
|
|
6
|
-
var patchOffset = refilm.patchOffset = function (fields, offset = fields.offset || 0) {
|
|
7
|
-
fields.offset = offset;
|
|
8
|
-
fields.forEach(f => {
|
|
9
|
-
f.offset = offset;
|
|
10
|
-
fields[f.key] = f;
|
|
11
|
-
offset += f.size * f.ratio;
|
|
12
|
-
});
|
|
13
|
-
fields.size = offset - fields.offset;
|
|
14
|
-
return offset;
|
|
15
|
-
};
|
|
16
|
-
refilm.createFromFields = function (fields, values) {
|
|
17
|
-
if (!fields.size) patchOffset(fields);
|
|
18
|
-
var size = fields.size;
|
|
19
|
-
var data = new Uint8Array(size);
|
|
20
|
-
if (!values) values = Object.create(null);
|
|
21
|
-
for (var f of fields) {
|
|
22
|
-
if (f.key in values || !f.value) continue;
|
|
23
|
-
values[f.key] = f.value;
|
|
24
|
-
}
|
|
25
|
-
writeFields(data, fields, values, 0);
|
|
26
|
-
return data;
|
|
27
|
-
}
|
|
28
|
-
var writeField = refilm.writeField = function (data, field, value, offset = field.offset, byteLimit = field.size * field.ratio) {
|
|
29
|
-
if (isArrayLike(value));
|
|
30
|
-
else if (typeof value === "string") {
|
|
31
|
-
value = encodeUTF8(value);
|
|
32
|
-
}
|
|
33
|
-
else if (typeof value === "number") {
|
|
34
|
-
var v = [];
|
|
35
|
-
var limit = byteLimit;
|
|
36
|
-
while (limit-- > 0) {
|
|
37
|
-
v.push(value & 0xff);
|
|
38
|
-
if (limit >= 4) {
|
|
39
|
-
value = value / 256;
|
|
40
|
-
}
|
|
41
|
-
else value = value >>> 8;
|
|
42
|
-
}
|
|
43
|
-
if (value) throw new Error(i18n`数据过大`);
|
|
44
|
-
value = v;
|
|
45
|
-
}
|
|
46
|
-
else value = [value | 0];
|
|
47
|
-
if (value.length > byteLimit) {
|
|
48
|
-
throw new Error(i18n`数据超出大小限制!`);
|
|
49
|
-
}
|
|
50
|
-
var offset = field.offset;
|
|
51
|
-
while (value.length) data[offset++] = value.shift();
|
|
52
|
-
};
|
|
53
|
-
var writeFields = refilm.writeFields = function (data, fields, values, offset = fields.offset) {
|
|
54
|
-
for (var f of fields) {
|
|
55
|
-
var size = f.size * f.ratio;
|
|
56
|
-
if (f.key in values) writeField(data, f, values[f.key], offset, size);
|
|
57
|
-
offset += size;
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
var toint = function (buf) {
|
|
61
|
-
var n = 0;
|
|
62
|
-
if (buf.length >= 7 && (buf[7] || buf[6] > 0x1f)) return buf;
|
|
63
|
-
switch (buf.length) {
|
|
64
|
-
default:
|
|
65
|
-
case 3:
|
|
66
|
-
n |= buf[2] << 16;
|
|
67
|
-
case 2:
|
|
68
|
-
n |= buf[1] << 8;
|
|
69
|
-
case 1:
|
|
70
|
-
n |= buf[0];
|
|
71
|
-
case 0:
|
|
72
|
-
}
|
|
73
|
-
for (var cx = 3, dx = buf.length; cx < dx; cx++) {
|
|
74
|
-
n += buf[cx] * 2 ** (cx << 3);
|
|
75
|
-
}
|
|
76
|
-
return n;
|
|
77
|
-
};
|
|
78
|
-
var readBuffer = refilm.readBuffer = function (data, field, offset = field.offset, size = field.size * field.ratio) {
|
|
79
|
-
return data.slice(offset, offset + size);
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
var readField = refilm.readField = function (data, field, offset, size) {
|
|
83
|
-
var v = readBuffer(data, field, offset, size);
|
|
84
|
-
if (/^([us]?int|byte|word|dword|qword|long)/i.test(field.type)) v = toint(v);
|
|
85
|
-
return v;
|
|
86
|
-
};
|
|
87
|
-
|
|
88
|
-
refilm.readFields = function (data, fields, offset = fields.offset || 0) {
|
|
89
|
-
var res = Object.create(null);
|
|
90
|
-
for (var f of fields) {
|
|
91
|
-
var size = f.size * f.ratio;
|
|
92
|
-
var v = readField(data, f, offset, size);
|
|
93
|
-
res[f.key] = v;
|
|
94
|
-
offset += size;
|
|
95
|
-
}
|
|
96
|
-
return res;
|
|
1
|
+
function refilm() {
|
|
2
|
+
var [str] = arguments;
|
|
3
|
+
if (str.raw) str = str.raw;
|
|
4
|
+
return refilm_decode.apply(null, [str].concat([].slice.call(arguments, 1)));
|
|
5
|
+
}
|
|
6
|
+
var patchOffset = refilm.patchOffset = function (fields, offset = fields.offset || 0) {
|
|
7
|
+
fields.offset = offset;
|
|
8
|
+
fields.forEach(f => {
|
|
9
|
+
f.offset = offset;
|
|
10
|
+
fields[f.key] = f;
|
|
11
|
+
offset += f.size * f.ratio;
|
|
12
|
+
});
|
|
13
|
+
fields.size = offset - fields.offset;
|
|
14
|
+
return offset;
|
|
15
|
+
};
|
|
16
|
+
refilm.createFromFields = function (fields, values) {
|
|
17
|
+
if (!fields.size) patchOffset(fields);
|
|
18
|
+
var size = fields.size;
|
|
19
|
+
var data = new Uint8Array(size);
|
|
20
|
+
if (!values) values = Object.create(null);
|
|
21
|
+
for (var f of fields) {
|
|
22
|
+
if (f.key in values || !f.value) continue;
|
|
23
|
+
values[f.key] = f.value;
|
|
24
|
+
}
|
|
25
|
+
writeFields(data, fields, values, 0);
|
|
26
|
+
return data;
|
|
27
|
+
}
|
|
28
|
+
var writeField = refilm.writeField = function (data, field, value, offset = field.offset, byteLimit = field.size * field.ratio) {
|
|
29
|
+
if (isArrayLike(value));
|
|
30
|
+
else if (typeof value === "string") {
|
|
31
|
+
value = encodeUTF8(value);
|
|
32
|
+
}
|
|
33
|
+
else if (typeof value === "number") {
|
|
34
|
+
var v = [];
|
|
35
|
+
var limit = byteLimit;
|
|
36
|
+
while (limit-- > 0) {
|
|
37
|
+
v.push(value & 0xff);
|
|
38
|
+
if (limit >= 4) {
|
|
39
|
+
value = value / 256;
|
|
40
|
+
}
|
|
41
|
+
else value = value >>> 8;
|
|
42
|
+
}
|
|
43
|
+
if (value) throw new Error(i18n`数据过大`);
|
|
44
|
+
value = v;
|
|
45
|
+
}
|
|
46
|
+
else value = [value | 0];
|
|
47
|
+
if (value.length > byteLimit) {
|
|
48
|
+
throw new Error(i18n`数据超出大小限制!`);
|
|
49
|
+
}
|
|
50
|
+
var offset = field.offset;
|
|
51
|
+
while (value.length) data[offset++] = value.shift();
|
|
52
|
+
};
|
|
53
|
+
var writeFields = refilm.writeFields = function (data, fields, values, offset = fields.offset) {
|
|
54
|
+
for (var f of fields) {
|
|
55
|
+
var size = f.size * f.ratio;
|
|
56
|
+
if (f.key in values) writeField(data, f, values[f.key], offset, size);
|
|
57
|
+
offset += size;
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
var toint = function (buf) {
|
|
61
|
+
var n = 0;
|
|
62
|
+
if (buf.length >= 7 && (buf[7] || buf[6] > 0x1f)) return buf;
|
|
63
|
+
switch (buf.length) {
|
|
64
|
+
default:
|
|
65
|
+
case 3:
|
|
66
|
+
n |= buf[2] << 16;
|
|
67
|
+
case 2:
|
|
68
|
+
n |= buf[1] << 8;
|
|
69
|
+
case 1:
|
|
70
|
+
n |= buf[0];
|
|
71
|
+
case 0:
|
|
72
|
+
}
|
|
73
|
+
for (var cx = 3, dx = buf.length; cx < dx; cx++) {
|
|
74
|
+
n += buf[cx] * 2 ** (cx << 3);
|
|
75
|
+
}
|
|
76
|
+
return n;
|
|
77
|
+
};
|
|
78
|
+
var readBuffer = refilm.readBuffer = function (data, field, offset = field.offset, size = field.size * field.ratio) {
|
|
79
|
+
return data.slice(offset, offset + size);
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
var readField = refilm.readField = function (data, field, offset, size) {
|
|
83
|
+
var v = readBuffer(data, field, offset, size);
|
|
84
|
+
if (/^([us]?int|byte|word|dword|qword|long)/i.test(field.type)) v = toint(v);
|
|
85
|
+
return v;
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
refilm.readFields = function (data, fields, offset = fields.offset || 0) {
|
|
89
|
+
var res = Object.create(null);
|
|
90
|
+
for (var f of fields) {
|
|
91
|
+
var size = f.size * f.ratio;
|
|
92
|
+
var v = readField(data, f, offset, size);
|
|
93
|
+
res[f.key] = v;
|
|
94
|
+
offset += size;
|
|
95
|
+
}
|
|
96
|
+
return res;
|
|
97
97
|
};
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
var getIndexFromOrderedArray = require("./getIndexFromOrderedArray");
|
|
2
|
-
/**
|
|
3
|
-
* 保存数据到有序数组
|
|
4
|
-
* @param {Array} orderArray
|
|
5
|
-
* @param {string|number} newItem
|
|
6
|
-
*/
|
|
7
|
-
module.exports = function (orderArray, newItem, isLE) {
|
|
8
|
-
var cx = getIndexFromOrderedArray(orderArray, newItem, isLE);
|
|
9
|
-
var keep = orderArray[cx] === newItem;
|
|
10
|
-
if (!keep) orderArray.splice(cx + 1, 0, newItem);
|
|
11
|
-
return cx + 1 - keep;
|
|
1
|
+
var getIndexFromOrderedArray = require("./getIndexFromOrderedArray");
|
|
2
|
+
/**
|
|
3
|
+
* 保存数据到有序数组
|
|
4
|
+
* @param {Array} orderArray
|
|
5
|
+
* @param {string|number} newItem
|
|
6
|
+
*/
|
|
7
|
+
module.exports = function (orderArray, newItem, isLE) {
|
|
8
|
+
var cx = getIndexFromOrderedArray(orderArray, newItem, isLE);
|
|
9
|
+
var keep = orderArray[cx] === newItem;
|
|
10
|
+
if (!keep) orderArray.splice(cx + 1, 0, newItem);
|
|
11
|
+
return cx + 1 - keep;
|
|
12
12
|
};
|
package/coms/basic/strings.js
CHANGED
|
@@ -44,7 +44,7 @@ var esc = function (a) {
|
|
|
44
44
|
function uncode(s) {
|
|
45
45
|
return s.replace(/\\u(?:\{[0-9a-f]+\}|[0-9a-f]{4})/ig, esc);
|
|
46
46
|
}
|
|
47
|
-
function kicode(s) {
|
|
47
|
+
function kicode(s, singleSlash = false) {
|
|
48
48
|
var t = [];
|
|
49
49
|
return s.replace(/\\(?:u\{[0-9a-f]+\}|u[0-9a-f]{4}|x[0-9a-f]{2}|([0-7]{1,3}|[\s\S]))/ig, (a, b, i) => {
|
|
50
50
|
if (!b) {
|
|
@@ -63,17 +63,19 @@ function kicode(s) {
|
|
|
63
63
|
}
|
|
64
64
|
if (unescapeMap.hasOwnProperty(a)) return unescapeMap[a];
|
|
65
65
|
if (/^[0-7]+$/.test(b)) return String.fromCharCode(parseInt(b, 8));
|
|
66
|
+
if (b === singleSlash) return b;
|
|
67
|
+
if (singleSlash) return '\\' + b;
|
|
66
68
|
return b;
|
|
67
69
|
});
|
|
68
70
|
}
|
|
69
|
-
function decode(s) {
|
|
71
|
+
function decode(s, singleSlash) {
|
|
70
72
|
var r = /^(['"`])([\s\S]*)\1$/.exec(s);
|
|
71
73
|
if (!r) return s;
|
|
72
|
-
return kicode(r[2]);
|
|
74
|
+
return kicode(r[2], singleSlash ? r[1] : null);
|
|
73
75
|
}
|
|
74
76
|
|
|
75
|
-
function recode(s) {
|
|
76
|
-
s = decode(s);
|
|
77
|
+
function recode(s, singleSlash) {
|
|
78
|
+
s = decode(s, singleSlash);
|
|
77
79
|
s = encode(s);
|
|
78
80
|
return s;
|
|
79
81
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Reflect.get;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Reflect.set;
|