efront 4.35.6 → 4.35.8

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.
Files changed (86) hide show
  1. package/apps/_index.html +41 -41
  2. package/apps/blank/index.html +20 -20
  3. package/apps/noice/index.html +42 -42
  4. package/apps/pivot/menu.yml +1 -6
  5. package/apps/pivot//344/270/273/351/241/265.html +42 -42
  6. package/coms/basic/JSAM.js +259 -259
  7. package/coms/basic/Matrix.js +1 -1
  8. package/coms/basic/check.js +42 -42
  9. package/coms/basic/color.js +696 -696
  10. package/coms/basic/crc.js +39 -39
  11. package/coms/basic/getIndexFromOrderedArray.js +39 -39
  12. package/coms/basic/isObject.js +3 -3
  13. package/coms/basic/keys.js +4 -4
  14. package/coms/basic/lazy.js +78 -78
  15. package/coms/basic/math.js +3 -3
  16. package/coms/basic/refilm.js +96 -96
  17. package/coms/basic/saveToOrderedArray.js +11 -11
  18. package/coms/compile/autoeval.js +8 -2
  19. package/coms/compile/autoeval_test.js +10 -8
  20. package/coms/compile/scanner.js +653 -653
  21. package/coms/compile/scanner2.js +0 -23
  22. package/coms/compile/wraphtml.js +1 -1
  23. package/coms/compile//347/256/227/345/274/217.js +1 -1
  24. package/coms/compile//347/256/227/345/274/217_test.js +4 -2
  25. package/coms/docs/getMimeData_test.js +19 -19
  26. package/coms/docs/md5.js +173 -173
  27. package/coms/frame/chat.js +2 -1
  28. package/coms/frame/top.less +190 -190
  29. package/coms/zimoli/AudioContext_test.html +5 -5
  30. package/coms/zimoli/AudioContext_test.js +92 -92
  31. package/coms/zimoli/AudioContext_test.less +114 -114
  32. package/coms/zimoli/alert_test.js +11 -11
  33. package/coms/zimoli/bggrid-func.less +2 -2
  34. package/coms/zimoli/dispatch.js +50 -50
  35. package/coms/zimoli/drag.js +11 -6
  36. package/coms/zimoli/extendTouchEvent.js +8 -8
  37. package/coms/zimoli/fullscreen.js +52 -52
  38. package/coms/zimoli/gallery.less +13 -13
  39. package/coms/zimoli/gallery_test.html +2 -2
  40. package/coms/zimoli/gallery_test.js +14 -14
  41. package/coms/zimoli/gallery_test.less +17 -17
  42. package/coms/zimoli/getChanged.js +7 -7
  43. package/coms/zimoli/getChanges.js +13 -13
  44. package/coms/zimoli/lattice.js +109 -109
  45. package/coms/zimoli/lattice_test.less +23 -23
  46. package/coms/zimoli/moveupon.js +26 -1
  47. package/coms/zimoli/picture.less +54 -71
  48. package/coms/zimoli/refilm_test.html +41 -41
  49. package/coms/zimoli/refilm_test.less +102 -102
  50. package/coms/zimoli/xml.js +131 -131
  51. package/data/keystore/cross-cert.pem +21 -21
  52. package/data/keystore/cross-key.pem +27 -27
  53. package/package.json +1 -1
  54. package/public/efront.js +1 -1
  55. package/public//346/226/207/344/273/266/347/263/273/347/273/237//344/270/273/351/241/265.jsp +2 -2
  56. package/apps/pay/paypal.jsp +0 -0
  57. package/apps/pay/wxpay.jsp +0 -32
  58. package/apps/pivot/dht/rent.html +0 -14
  59. package/apps/pivot/dht/rent.js +0 -148
  60. package/apps/pivot/dht/rent.less +0 -46
  61. package/apps/pivot/home/desktop.xht +0 -0
  62. package/apps/pivot/shop/goods/list.xht +0 -183
  63. package/apps/pivot/shop/home.xht +0 -20
  64. package/apps/pivot/shop/mind/list.xht +0 -1
  65. package/apps/pivot/shop/order/create.xht +0 -49
  66. package/apps/pivot/shop/order/list.xht +0 -1
  67. package/apps/pivot/shop/paypal.jsp +0 -23
  68. package/apps/pivot/soft/list.html +0 -0
  69. package/apps/pivot/soft/list.js +0 -9
  70. package/apps/pivot/soft/list.less +0 -0
  71. package/coms/7z_temp/Java.js +0 -93
  72. package/coms/7z_temp/LzmaBench.java +0 -392
  73. package/coms/7z_temp/read-from-java-code.js +0 -28
  74. package/coms/7z_temp//350/257/264/346/230/216.md +0 -1
  75. package/coms/basic_/&pget.js +0 -1
  76. package/coms/basic_/&pset.js +0 -1
  77. package/coms/basic_/Proxy.js +0 -6
  78. package/coms/basic_/Reflect.js +0 -55
  79. package/coms/compile/bracket.js +0 -51
  80. package/coms/compile/bracket_test.js +0 -9
  81. package/coms/compile/createvm.js +0 -35
  82. package/coms/compile/createvm_test.js +0 -7
  83. package/coms/pivot/DB.js +0 -9
  84. package/coms/pivot/paypal-var.js +0 -1
  85. package/coms/pivot//345/225/206/345/223/201.js +0 -1
  86. /package/apps/pivot/{ticket → tick}/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
+ };
@@ -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
  }
@@ -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
  }
@@ -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;
@@ -140,7 +140,7 @@ var funcmap = {
140
140
  log(x, n) {
141
141
  return `<msub><mo>log</mo>${n}</msub>${x}`
142
142
  },
143
- ln(x){
143
+ ln(x) {
144
144
  return `<mo>ln</mo>${x}`
145
145
  },
146
146
  "div"(...args) {
@@ -326,7 +326,7 @@ function toString(obj, p, deep) {
326
326
  var origin = obj[k];
327
327
  if (k === '..') {
328
328
  var [prefix, rep, dots, e] = origin;
329
- prefix = String(prefix);
329
+ prefix = String(prefix).replace(/^\-/, '–');
330
330
  if (typeof rep === 'number') rep = String(rep);
331
331
  if (rep && !/\./.test(prefix)) prefix += '.';
332
332
  if (typeof e === 'number') e = String(e);
@@ -340,7 +340,7 @@ function toString(obj, p, deep) {
340
340
  else rep = mn(rep);
341
341
  if (dots) dots = mn(dots);
342
342
  else dots = '';
343
- if (e) e = `<mo>×</mo><msup><mn>10</mn><mn>${e}</mn></msup>`;
343
+ if (e) e = `<mo>×</mo><msup><mn>10</mn><mn>${String(e).replace(/^\-/, '–')}</mn></msup>`;
344
344
  else e = '';
345
345
  prefix = mn(prefix);
346
346
  return mrow([prefix, rep, dots, e].join(''), e ? p >= pmap["*"] : false, deep);
@@ -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
  };
@@ -296,7 +296,7 @@ function solve(body, ox, dx) {
296
296
  var p1 = p;
297
297
  var pt1 = pt;
298
298
  var p2 = p;
299
- while (p1 <= cache[cache.length - 1]) {
299
+ while (p <= cache[cache.length - 1]) {
300
300
  p2 = p1;
301
301
  p1 = cache.pop();
302
302
  pt1 = cache.pop();
@@ -306,7 +306,7 @@ function solve(body, ox, dx) {
306
306
  if (p === p1 && p > powermap[">>>"]) cache.push(bx, pt1, p1);
307
307
  continue;
308
308
  }
309
- var cx1 = make(body, bx, cx, p === p2 ? pt1 : null);
309
+ var cx1 = make(body, bx, cx, pt1);
310
310
  if (cx1 !== cx) {
311
311
  dx -= cx - cx1;
312
312
  cx = cx1;
@@ -316,6 +316,12 @@ function solve(body, ox, dx) {
316
316
  }
317
317
  if (p === 0) {
318
318
  cache.splice(0, cache.length);
319
+ continue;
320
+ }
321
+ if (p > p0) {
322
+ bx = cx + 1;
323
+ cache.push(bx, pt, p);
324
+ continue;
319
325
  }
320
326
  continue;
321
327
  }
@@ -65,7 +65,6 @@ t("a+ b*3**2", "a + b * 9");
65
65
  t("a+ 2*3**b", "a + 2 * 3 ** b");
66
66
  t("a+ 2*3 +c", "a + 6 + c");
67
67
  t("a+ 2*3 +4+c", "a + 10 + c");
68
- autoeval.debug = true;
69
68
  t("a- 2*3 +4+c", "a - 2 + c");
70
69
  t("a- 1 +4", "a + 3");
71
70
  t("a / 6 * 3", "a * 0.5");
@@ -84,14 +83,17 @@ tc("calc(10 / 20)", "0.5");
84
83
  tc("calc(10 / 20)", "0.5");
85
84
  tc("Math.log(f) / Math.LN2 / 10 | 0", "Math.log(f) * 0.14426950408889633 | 0");
86
85
  tc("Math.log(f) / Math.LN2 / 10 * 10 | 0", "Math.log(f) * 1.4426950408889634 | 0");
86
+ autoeval.debug = true;
87
87
  tc("Math.log(f) / Math.LN2 / 10 ** 2 | 0", "Math.log(f) * 0.014426950408889633 | 0");
88
+ autoeval.debug = false;
88
89
  // tf(path.join(__dirname, "../zimoli/spacechar_test.js"))
89
90
  t("1<<0", '1');
90
91
  t("1<<3", '8');
91
- t("(1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0)",'1335')
92
- t("(1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0)","7973")
93
- t("(1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1)","21522")
94
- t('1n<<32n','4294967296n');
95
- t('4294967296n*4294967296n','18446744073709551616n');
96
- t('4294967296n*2147483648n','9223372036854775808n');
97
- t('0x20000000n*0x1000000n','9007199254740992n');
92
+ t("(1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0)", '1335')
93
+ t("(1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0)", "7973")
94
+ t("(1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1)", "21522")
95
+ t('1n<<32n', '4294967296n');
96
+ t('4294967296n*4294967296n', '18446744073709551616n');
97
+ t('4294967296n*2147483648n', '9223372036854775808n');
98
+ t('0x20000000n*0x1000000n', '9007199254740992n');
99
+ t("1 + 1 / 2 + 1 / 3 + 1 / 4 + 1 / 5 + 1 / 6 + 1 / 7 + 1 / 8 + 1 / 9 + 1 / 10 + 1 / 11 + 1 / 12 + 1 / 13 + 1 / 14 + 1 / 15 + 1 / 16 + 1 / 17 + 1 / 18 + 1 / 19 + 1 / 20", "3.5977396571436824")