efront 4.20.1 → 4.21.0
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/#loader.js +4 -4
- package/coms/basic/ArrayFill.js +1 -5
- package/coms/basic/extend.js +1 -17
- package/coms/basic/isSubpath.js +2 -0
- package/coms/basic_/{Array2.js → &Array.js} +2 -1
- package/coms/basic_/&ArrayFill.js +5 -0
- package/coms/basic_/{aster_.js → &aster.js} +3 -2
- package/coms/basic_/&async.js +5 -0
- package/coms/basic_/{asyncAster_.js → &asyncAster.js} +3 -2
- package/coms/basic_/&async_test.js +15 -0
- package/coms/basic_/{exec_.js → &exec.js} +2 -1
- package/coms/basic_/&extend.js +18 -0
- package/coms/basic_/{extends_.js → &extends.js} +2 -1
- package/coms/basic_/readme-en.md +3 -3
- package/coms/basic_/readme.md +3 -3
- package/coms/compile/Javascript.js +3 -3
- package/coms/compile/Program.js +20 -4
- package/coms/compile/common.js +1 -1
- package/coms/compile/downLevel.js +20 -20
- package/coms/compile/downLevel_test.js +91 -91
- package/coms/compile/nametill.js +13 -0
- package/coms/compile/polyfill.js +1 -1
- package/coms/compile/run-test262.js +8 -8
- package/coms/compile/scanner2.js +22 -3
- package/coms/compile/unstruct.js +3 -3
- package/coms/compile/unstruct_test.js +1 -1
- package/coms/compile//347/264/240/351/246/250.js +12 -4
- package/coms/compile//347/264/240/351/246/250_test.js +3 -0
- package/coms/explorer/fileitem.html +5 -4
- package/coms/explorer/fileitem.js +5 -1
- package/coms/explorer/fileitem.less +67 -6
- package/coms/reptile/colored_console.js +1 -1
- package/coms/zimoli/XMLHttpRequest.js +29 -25
- package/coms/zimoli/popup.js +2 -1
- package/coms/zimoli/render.js +3 -3
- package/coms/zimoli/view.js +4 -4
- package/package.json +1 -1
- package/public/efront.js +1 -1
- package/coms/basic_/async_.js +0 -4
- package/coms/basic_/async_test.js +0 -11
- /package/coms/basic_/{exec_test.js → &exec_test.js} +0 -0
- /package/coms/basic_/{nullish_.js → &nullish.js} +0 -0
- /package/coms/basic_/{power_.js → &power.js} +0 -0
- /package/coms/basic_/{rest_.js → &rest.js} +0 -0
- /package/coms/basic_/{restIter_.js → &restIter.js} +0 -0
- /package/coms/basic_/{withget_.js → &wget.js} +0 -0
- /package/coms/basic_/{with_.js → &with.js} +0 -0
|
@@ -9,16 +9,16 @@ assert = function (a, b) {
|
|
|
9
9
|
var innerJs = new Javascript;
|
|
10
10
|
innerJs.defaultType = common.STRAP;
|
|
11
11
|
// 运算符
|
|
12
|
-
assert(downLevel(`a??b`), '
|
|
13
|
-
assert(downLevel(`a**b`), '
|
|
14
|
-
assert(downLevel(`a.c**b`), '
|
|
15
|
-
assert(downLevel(`a??=b`), 'a =
|
|
16
|
-
assert(downLevel(`a**=b`), 'a =
|
|
17
|
-
assert(downLevel(`a+=b+c**d`), 'a += b +
|
|
18
|
-
assert(downLevel(`a(c**=d)`), 'a(c =
|
|
19
|
-
assert(downLevel(`a(c.b.d**=d)`), 'a((_ = c.b, _.d =
|
|
20
|
-
assert(downLevel(`a(c.b[a.b]**=d)`), 'a((_ = c.b, _[_0 = a.b] =
|
|
21
|
-
assert(downLevel(`c.b[a.b]**=d`), '_ = c.b, _[_0 = a.b] =
|
|
12
|
+
assert(downLevel(`a??b`), '&nullish(a, b)', true);
|
|
13
|
+
assert(downLevel(`a**b`), '&power(a, b)', true);
|
|
14
|
+
assert(downLevel(`a.c**b`), '&power(a.c, b)', true);
|
|
15
|
+
assert(downLevel(`a??=b`), 'a = &nullish(a, b)', true);
|
|
16
|
+
assert(downLevel(`a**=b`), 'a = &power(a, b)', true);
|
|
17
|
+
assert(downLevel(`a+=b+c**d`), 'a += b + &power(c, d)', true);
|
|
18
|
+
assert(downLevel(`a(c**=d)`), 'a(c = &power(c, d))', true);
|
|
19
|
+
assert(downLevel(`a(c.b.d**=d)`), 'a((_ = c.b, _.d = &power(_.d, d)))\r\nvar _', true);
|
|
20
|
+
assert(downLevel(`a(c.b[a.b]**=d)`), 'a((_ = c.b, _[_0 = a.b] = &power(_[_0], d)))\r\nvar _, _0', true);
|
|
21
|
+
assert(downLevel(`c.b[a.b]**=d`), '_ = c.b, _[_0 = a.b] = &power(_[_0], d)\r\nvar _, _0', true);
|
|
22
22
|
i++// 声明及解构
|
|
23
23
|
assert(downLevel(`var [data, args, strs] = breakcode(data, occurs), strs = []`), 'var _ = breakcode(data, occurs), data = _[0], args = _[1], strs = _[2], strs = []\r\nvar _');
|
|
24
24
|
assert(downLevel(`var [name, type, options] = piece, key, repeat;`), 'var name = piece[0], type = piece[1], options = piece[2], key, repeat;');
|
|
@@ -83,7 +83,7 @@ assert(downLevel(`class a {}`), "function a() {}")
|
|
|
83
83
|
var tmp = scanner2('export class a{a(){}}'); tmp.fix(); assert(downLevel.code(tmp).toString(), `exports.a = function (a) { a["prototype"].a = function () {}\r\nreturn a }(function a() {})`);
|
|
84
84
|
assert(downLevel(`class a { static{ a.a=1}}`), "function a() {}; (function () { a.a = 1 }())")
|
|
85
85
|
assert(downLevel(`if(a) a = 1; class a {}`), "if (a) a = 1; function a() {}")
|
|
86
|
-
assert(downLevel(`async function(){if(a) a = 1; class a {}}`), `function () { return
|
|
86
|
+
assert(downLevel(`async function(){if(a) a = 1; class a {}}`), `function () { return &async(
|
|
87
87
|
function () {
|
|
88
88
|
a = function () {}; if (!a) return [1, 0]; a = 1; return [1, 0]
|
|
89
89
|
})
|
|
@@ -97,8 +97,8 @@ assert(downLevel(`var a=class { constructor(){this.a=1}; static b=2 b(){}};`), `
|
|
|
97
97
|
assert(downLevel(`class a {static b(){}}`), "function a() {}; a.b = function () {}")
|
|
98
98
|
assert(downLevel(`class a extends b{}`), `function a() {
|
|
99
99
|
var this_ = b["apply"](this, arguments) || this;
|
|
100
|
-
return this_ };
|
|
101
|
-
assert(downLevel(`class a extends class b{}{}`), `var a = function (b, a) {
|
|
100
|
+
return this_ }; &extends(a, b)`);
|
|
101
|
+
assert(downLevel(`class a extends class b{}{}`), `var a = function (b, a) { &extends(a, b)\r\nreturn a }(function b() {}, function a() {
|
|
102
102
|
var this_ = b["apply"](this, arguments) || this;
|
|
103
103
|
return this_ })`);
|
|
104
104
|
assert(downLevel(`class a {get a(){}}`), `function a() {};
|
|
@@ -118,18 +118,18 @@ var tmp`);
|
|
|
118
118
|
i++// 属性降级
|
|
119
119
|
assert(downLevel(`return ({b,async a(){}})`), `return ((_ = {},
|
|
120
120
|
_.b = b,
|
|
121
|
-
_.a = function () { return
|
|
121
|
+
_.a = function () { return &async() }, _))\r\nvar _`);
|
|
122
122
|
assert(downLevel(`var a={b,async a(){}}`), `var a = (_ = {},
|
|
123
123
|
_.b = b,
|
|
124
|
-
_.a = function () { return
|
|
124
|
+
_.a = function () { return &async() }, _)\r\nvar _`);
|
|
125
125
|
assert(downLevel(`var a={b:a=>b,c}`), `var a = (_ = {},
|
|
126
126
|
_.b = function (a) { return b },
|
|
127
127
|
_.c = c, _)\r\nvar _`);
|
|
128
128
|
assert(downLevel(`={b,async a(){}}`), `= (_ = {},
|
|
129
129
|
_.b = b,
|
|
130
|
-
_.a = function () { return
|
|
130
|
+
_.a = function () { return &async() }, _)\r\nvar _`);
|
|
131
131
|
assert(downLevel(`={async [a](){}}`), `= (_ = {},
|
|
132
|
-
_[a] = function () { return
|
|
132
|
+
_[a] = function () { return &async() }, _)\r\nvar _`);
|
|
133
133
|
assert(downLevel(`={[a]:b}`), `= (_ = {},
|
|
134
134
|
_[a] = b, _)\r\nvar _`);
|
|
135
135
|
assert(downLevel(`={a:1,[a]:1}`), `= (_ = { a: 1 },
|
|
@@ -152,13 +152,13 @@ _[b] = (_0 = {},
|
|
|
152
152
|
_0[a] = 1, _0), _)\r\nvar _, _0, _1`);
|
|
153
153
|
i++// 对象展开
|
|
154
154
|
assert(downLevel(`={ok:ok}`), `= { ok: ok }`);
|
|
155
|
-
assert(downLevel(`={...a}`), `= extend({}, a)`);
|
|
156
|
-
assert(downLevel(`={...a&&b}`), `= extend({}, a && b)`);
|
|
157
|
-
assert(downLevel(`()=>({\r\nfileName: entry.fileName,\r\ntextSpan: highlightSpan.textSpan,\r\nisWriteAccess: highlightSpan.kind === "writtenReference" /* writtenReference */,\r\n...highlightSpan.isInString && { isInString: true },\r\n...highlightSpan.contextSpan && { contextSpan: highlightSpan.contextSpan }})`), `function () { return (extend({
|
|
155
|
+
assert(downLevel(`={...a}`), `= &extend({}, a)`);
|
|
156
|
+
assert(downLevel(`={...a&&b}`), `= &extend({}, a && b)`);
|
|
157
|
+
assert(downLevel(`()=>({\r\nfileName: entry.fileName,\r\ntextSpan: highlightSpan.textSpan,\r\nisWriteAccess: highlightSpan.kind === "writtenReference" /* writtenReference */,\r\n...highlightSpan.isInString && { isInString: true },\r\n...highlightSpan.contextSpan && { contextSpan: highlightSpan.contextSpan }})`), `function () { return (&extend({
|
|
158
158
|
fileName: entry.fileName,
|
|
159
159
|
textSpan: highlightSpan.textSpan,
|
|
160
160
|
isWriteAccess: highlightSpan.kind === "writtenReference" /* writtenReference */ }, highlightSpan.isInString && { isInString: true }, highlightSpan.contextSpan && { contextSpan: highlightSpan.contextSpan })) }`);
|
|
161
|
-
assert(downLevel(`async()=>({ [argitem.sort ? argitem.sort : 'date']: "desc" })`), `function () { return
|
|
161
|
+
assert(downLevel(`async()=>({ [argitem.sort ? argitem.sort : 'date']: "desc" })`), `function () { return &async(
|
|
162
162
|
function () {
|
|
163
163
|
_ = {}; if (!argitem.sort) return [1, 0]; _1 = argitem.sort; return [2, 0]
|
|
164
164
|
},
|
|
@@ -170,51 +170,51 @@ _[_1] = "desc"; _0 = _; return [_0, 2]
|
|
|
170
170
|
})
|
|
171
171
|
var _0, _1 }
|
|
172
172
|
var _`);
|
|
173
|
-
assert(downLevel(`={...{a:1}}`), `= extend({}, { a: 1 })`);
|
|
174
|
-
assert(downLevel(`={...a,...c}`), `= extend({}, a, c)`);
|
|
175
|
-
assert(downLevel(`={a:a,...b,c}`), `= (_ = extend({ a: a }, b),\r\n_.c = c, _)\r\nvar _`);
|
|
176
|
-
assert(downLevel(`={...b,c,...d,e}`), `= (_ = extend({}, b),\r\n_.c = c, extend(_, d),\r\n_.e = e, _)\r\nvar _`);
|
|
177
|
-
assert(downLevel(`={...a,b}`), `= (_ = extend({}, a),
|
|
173
|
+
assert(downLevel(`={...{a:1}}`), `= &extend({}, { a: 1 })`);
|
|
174
|
+
assert(downLevel(`={...a,...c}`), `= &extend({}, a, c)`);
|
|
175
|
+
assert(downLevel(`={a:a,...b,c}`), `= (_ = &extend({ a: a }, b),\r\n_.c = c, _)\r\nvar _`);
|
|
176
|
+
assert(downLevel(`={...b,c,...d,e}`), `= (_ = &extend({}, b),\r\n_.c = c, &extend(_, d),\r\n_.e = e, _)\r\nvar _`);
|
|
177
|
+
assert(downLevel(`={...a,b}`), `= (_ = &extend({}, a),
|
|
178
178
|
_.b = b, _)\r\nvar _`);
|
|
179
|
-
assert(downLevel(`={...a,b,...c}`), `= (_ = extend({}, a),
|
|
180
|
-
_.b = b, extend(_, c), _)\r\nvar _`);
|
|
181
|
-
assert(downLevel(`={...a,...c,b}`), `= (_ = extend({}, a, c),
|
|
179
|
+
assert(downLevel(`={...a,b,...c}`), `= (_ = &extend({}, a),
|
|
180
|
+
_.b = b, &extend(_, c), _)\r\nvar _`);
|
|
181
|
+
assert(downLevel(`={...a,...c,b}`), `= (_ = &extend({}, a, c),
|
|
182
182
|
_.b = b, _)\r\nvar _`);
|
|
183
|
-
assert(downLevel(`={...{},...c,b}`), `= (_ = extend({}, {}, c),
|
|
183
|
+
assert(downLevel(`={...{},...c,b}`), `= (_ = &extend({}, {}, c),
|
|
184
184
|
_.b = b, _)\r\nvar _`);
|
|
185
185
|
assert(downLevel(`={a(){},get c(){},b}`), `= (_ = {},
|
|
186
186
|
_.a = function () {},
|
|
187
187
|
Object["defineProperty"](_, "c", (_0 = {}, _0["get"] = function () {}, _0)),
|
|
188
188
|
_.b = b, _)\r\nvar _, _0`);
|
|
189
189
|
assert(downLevel(`if(){Promise.reslove({get then() {}})}`), `if () { Promise.reslove((_ = {},\r\nObject["defineProperty"](_, "then", (_0 = {}, _0["get"] = function () {}, _0)), _)) }\r\nvar _, _0`)
|
|
190
|
-
assert(downLevel(`=[...a]`), `var
|
|
191
|
-
assert(downLevel(`let a = [...a,...a()];`), `var
|
|
192
|
-
assert(downLevel(`=[...a,...b]`), `var
|
|
193
|
-
assert(downLevel(`=[a,...b]`), `var
|
|
194
|
-
assert(downLevel(`=[a,...b,...c]`), `var
|
|
195
|
-
assert(downLevel(`=[a,b,...c]`), `var
|
|
196
|
-
assert(downLevel(`=[a,b,...c,d]`), `var
|
|
197
|
-
assert(downLevel(`=[a,b,...c,d,e,f]`), `var
|
|
198
|
-
assert(downLevel(`=[a,b,...c,d,e,f,...g]`), `var
|
|
199
|
-
assert(downLevel(`=[a,b,...c,d,...e]`), `var
|
|
190
|
+
assert(downLevel(`=[...a]`), `var &slice = Array["prototype"]["slice"];\r\n= &slice["call"](a)`)
|
|
191
|
+
assert(downLevel(`let a = [...a,...a()];`), `var &slice = Array["prototype"]["slice"];\r\nvar a = &slice["call"](a)["concat"](&slice["call"](a()));`)
|
|
192
|
+
assert(downLevel(`=[...a,...b]`), `var &slice = Array["prototype"]["slice"];\r\n= &slice["call"](a)["concat"](&slice["call"](b))`)
|
|
193
|
+
assert(downLevel(`=[a,...b]`), `var &slice = Array["prototype"]["slice"];\r\n= [a]["concat"](&slice["call"](b))`)
|
|
194
|
+
assert(downLevel(`=[a,...b,...c]`), `var &slice = Array["prototype"]["slice"];\r\n= [a]["concat"](&slice["call"](b), &slice["call"](c))`)
|
|
195
|
+
assert(downLevel(`=[a,b,...c]`), `var &slice = Array["prototype"]["slice"];\r\n= [a, b]["concat"](&slice["call"](c))`)
|
|
196
|
+
assert(downLevel(`=[a,b,...c,d]`), `var &slice = Array["prototype"]["slice"];\r\n= [a, b]["concat"](&slice["call"](c), [d])`)
|
|
197
|
+
assert(downLevel(`=[a,b,...c,d,e,f]`), `var &slice = Array["prototype"]["slice"];\r\n= [a, b]["concat"](&slice["call"](c), [d, e, f])`)
|
|
198
|
+
assert(downLevel(`=[a,b,...c,d,e,f,...g]`), `var &slice = Array["prototype"]["slice"];\r\n= [a, b]["concat"](&slice["call"](c), [d, e, f], &slice["call"](g))`)
|
|
199
|
+
assert(downLevel(`=[a,b,...c,d,...e]`), `var &slice = Array["prototype"]["slice"];\r\n= [a, b]["concat"](&slice["call"](c), [d], &slice["call"](e))`)
|
|
200
200
|
assert(downLevel(`a(...b)`), `a["apply"](null, b)`)
|
|
201
201
|
assert(downLevel(`a(..."b,c".split(","))`), `a["apply"](null, "b,c".split(","))`)
|
|
202
|
-
assert(downLevel(`new a(...args)`), `var
|
|
203
|
-
assert(downLevel(`a(c,d,e,...b(...c))`), `var
|
|
204
|
-
assert(downLevel(`a(c,d,e,...b.a(...c))`), `var
|
|
205
|
-
assert(downLevel(`a(c,d,e,...b.a.c(...c))`), `var
|
|
206
|
-
assert(downLevel(`a(...b,...c)`), `var
|
|
207
|
-
assert(downLevel(`a(...b,c)`), `var
|
|
202
|
+
assert(downLevel(`new a(...args)`), `var &slice = Array["prototype"]["slice"];\r\nnew (a['bind']['apply'](a, [null]["concat"](&slice["call"](args))))`)
|
|
203
|
+
assert(downLevel(`a(c,d,e,...b(...c))`), `var &slice = Array["prototype"]["slice"];\r\na["apply"](null, [c, d, e]["concat"](&slice["call"](b["apply"](null, c))))`)
|
|
204
|
+
assert(downLevel(`a(c,d,e,...b.a(...c))`), `var &slice = Array["prototype"]["slice"];\r\na["apply"](null, [c, d, e]["concat"](&slice["call"](b.a["apply"](b, c))))`)
|
|
205
|
+
assert(downLevel(`a(c,d,e,...b.a.c(...c))`), `var &slice = Array["prototype"]["slice"];\r\na["apply"](null, [c, d, e]["concat"](&slice["call"]((_ = b.a).c["apply"](_, c))))\r\nvar _`)
|
|
206
|
+
assert(downLevel(`a(...b,...c)`), `var &slice = Array["prototype"]["slice"];\r\na["apply"](null, &slice["call"](b)["concat"](&slice["call"](c)))`)
|
|
207
|
+
assert(downLevel(`a(...b,c)`), `var &slice = Array["prototype"]["slice"];\r\na["apply"](null, &slice["call"](b)["concat"]([c]))`)
|
|
208
208
|
assert(downLevel(`getPendingExpressions()[_push](...flattenCommaList(expr));`), `(_ = getPendingExpressions())[_push]["apply"](_, flattenCommaList(expr));\r\nvar _`)
|
|
209
|
-
assert(downLevel(`a(b,...c)`), `var
|
|
210
|
-
assert(downLevel(`a(a,b,...c,d,...e)`), `var
|
|
211
|
-
assert(downLevel(`a["call"](a,b,...c,d,...e)`), `var
|
|
212
|
-
assert(downLevel(`a.b(a,b,...c,d,...e)`), `var
|
|
213
|
-
assert(downLevel(`[].b(a,b,...c,d,...e)`), `var
|
|
209
|
+
assert(downLevel(`a(b,...c)`), `var &slice = Array["prototype"]["slice"];\r\na["apply"](null, [b]["concat"](&slice["call"](c)))`)
|
|
210
|
+
assert(downLevel(`a(a,b,...c,d,...e)`), `var &slice = Array["prototype"]["slice"];\r\na["apply"](null, [a, b]["concat"](&slice["call"](c), [d], &slice["call"](e)))`)
|
|
211
|
+
assert(downLevel(`a["call"](a,b,...c,d,...e)`), `var &slice = Array["prototype"]["slice"];\r\na["call"]["apply"](a, [a, b]["concat"](&slice["call"](c), [d], &slice["call"](e)))`)
|
|
212
|
+
assert(downLevel(`a.b(a,b,...c,d,...e)`), `var &slice = Array["prototype"]["slice"];\r\na.b["apply"](a, [a, b]["concat"](&slice["call"](c), [d], &slice["call"](e)))`)
|
|
213
|
+
assert(downLevel(`[].b(a,b,...c,d,...e)`), `var &slice = Array["prototype"]["slice"];\r\n(_ = []).b["apply"](_, [a, b]["concat"](&slice["call"](c), [d], &slice["call"](e)))\r\nvar _`)
|
|
214
214
|
assert(downLevel(`a(...b).c(...d)`), `(_ = a["apply"](null, b)).c["apply"](_, d)\r\nvar _`)
|
|
215
215
|
assert(downLevel(`a(...b).c(...d).e(...f)`), `(_ = (_ = a["apply"](null, b)).c["apply"](_, d)).e["apply"](_, f)\r\nvar _`)
|
|
216
216
|
assert(downLevel(`diagnostic.relatedInformation.push(...relatedInformation);`), `(_ = diagnostic.relatedInformation).push["apply"](_, relatedInformation);\r\nvar _`);
|
|
217
|
-
assert(downLevel(`const typeNames = [79 /* Identifier */, ...typeKeywords];`), `var
|
|
217
|
+
assert(downLevel(`const typeNames = [79 /* Identifier */, ...typeKeywords];`), `var &slice = Array["prototype"]["slice"];\r\nvar typeNames = [79 /* Identifier */]["concat"](&slice["call"](typeKeywords));`);
|
|
218
218
|
i++// 箭头函数
|
|
219
219
|
assert(downLevel(`a=>k`), "function (a) { return k }")
|
|
220
220
|
assert(downLevel(`function (a,...b,b){}`), `function (a, b) { b = arguments["length"] > 1 ? arguments[arguments["length"] - 1] : undefined; }`)
|
|
@@ -225,11 +225,11 @@ assert(downLevel(`map(([a])=>a)`), "map(function (arg) { var a = arg[0]; return
|
|
|
225
225
|
assert(downLevel(`var [_, R, G, B, A] = rgbHex.exec(color).map(a => parseInt(a + a, 16));`), "var _0 = rgbHex.exec(color).map(function (a) { return parseInt(a + a, 16) }), _ = _0[0], R = _0[1], G = _0[2], B = _0[3], A = _0[4];\r\nvar _0")
|
|
226
226
|
assert(downLevel(`if (/^(?:select|input|textarea)$/i.test(initialEvent.target.tagName) || getTargetIn(a => a.nodrag || a.hasAttribute('nodrag'), initialEvent.target)) return;`), "if (/^(?:select|input|textarea)$/i.test(initialEvent.target.tagName) || getTargetIn(function (a) { return a.nodrag || a.hasAttribute('nodrag') }, initialEvent.target)) return;")
|
|
227
227
|
i++// 对象收集
|
|
228
|
-
assert(downLevel(`function (a,...b){}`), `var
|
|
229
|
-
assert(downLevel(`function (a,...b,c){}`), `var
|
|
228
|
+
assert(downLevel(`function (a,...b){}`), `var &slice = Array["prototype"]["slice"];\r\nfunction (a) { var b = &slice["call"](arguments, 1); }`)
|
|
229
|
+
assert(downLevel(`function (a,...b,c){}`), `var &slice = Array["prototype"]["slice"];\r\nfunction (a, c) { var b = &slice["call"](arguments, 1, -1); c = arguments["length"] > 1 ? arguments[arguments["length"] - 1] : undefined; }`)
|
|
230
230
|
assert(downLevel(`function (a,...,c){}`), `function (a, c) { c = arguments["length"] > 1 ? arguments[arguments["length"] - 1] : undefined; }`)
|
|
231
|
-
assert(downLevel(`(...a) => k`), `var
|
|
232
|
-
assert(downLevel(`for await(o of os) noSymbol`), `return
|
|
231
|
+
assert(downLevel(`(...a) => k`), `var &slice = Array["prototype"]["slice"];\r\nfunction () { var a = &slice["call"](arguments, 0); return k }`)
|
|
232
|
+
assert(downLevel(`for await(o of os) noSymbol`), `return &async(
|
|
233
233
|
function () {
|
|
234
234
|
return [8, 8]
|
|
235
235
|
},
|
|
@@ -267,7 +267,7 @@ function () {
|
|
|
267
267
|
return [1, 9]
|
|
268
268
|
})
|
|
269
269
|
var _, _0, _2, _3`)
|
|
270
|
-
assert(downLevel(`for await(var [o,s] of os) noSymbol`), `return
|
|
270
|
+
assert(downLevel(`for await(var [o,s] of os) noSymbol`), `return &async(
|
|
271
271
|
function () {
|
|
272
272
|
return [11, 8]
|
|
273
273
|
},
|
|
@@ -322,21 +322,21 @@ assert(downLevel(`for(var [a] of os)Symbol`), `try { for (var a, _0 = os[Symbol[
|
|
|
322
322
|
var _, _0, _1, _2, _3`)
|
|
323
323
|
assert(downLevel(`for(var [a,b] of os)Symbol`), `try { for (var a, b, _0 = os[Symbol["iterator"]] || Array["prototype"][Symbol["iterator"]], _0 = _0["call"](os), _ = _0["next"](); !_["done"] && (_1 = _["value"], _2 = (_1[Symbol["iterator"]] || Array["prototype"][Symbol["iterator"]])["call"](_1), _3 = undefined, _3 = _2["next"](), a = _3["value"], _3 = _2["next"](), b = _3["value"], _3 = (!_3 || !_3["done"]) && isFunction(_2["return"]) && _2["return"](), true); _ = _0["next"]()) Symbol } finally { if (_ && !_["done"] && isFunction(_0["return"])) _0["return"]() }
|
|
324
324
|
var _, _0, _1, _2, _3`)
|
|
325
|
-
assert(downLevel(`[...a]=a`), `var
|
|
326
|
-
assert(downLevel(`[c,...a]=a`), `var
|
|
327
|
-
assert(downLevel(`[...a]=a`), `var
|
|
328
|
-
assert(downLevel(`[...a,c]=a`), `var
|
|
329
|
-
assert(downLevel(`{...a,c}=a`), `c = a.c, a =
|
|
330
|
-
assert(downLevel(`{c,...a}=a`), `c = a.c, a =
|
|
325
|
+
assert(downLevel(`[...a]=a`), `var &slice = Array["prototype"]["slice"];\r\na = &slice["call"](a, 0)`)
|
|
326
|
+
assert(downLevel(`[c,...a]=a`), `var &slice = Array["prototype"]["slice"];\r\nc = a[0], a = &slice["call"](a, 1)`)
|
|
327
|
+
assert(downLevel(`[...a]=a`), `var &slice = Array["prototype"]["slice"];\r\na = &slice["call"](a, 0)`)
|
|
328
|
+
assert(downLevel(`[...a,c]=a`), `var &slice = Array["prototype"]["slice"];\r\n_ = a, a = &slice["call"](a, 0, -1), c = _["length"] > 1 ? _[_["length"] - 1] : undefined\r\nvar _`)
|
|
329
|
+
assert(downLevel(`{...a,c}=a`), `c = a.c, a = &rest(a, ["c"])`)
|
|
330
|
+
assert(downLevel(`{c,...a}=a`), `c = a.c, a = &rest(a, ["c"])`)
|
|
331
331
|
assert(downLevel("if(a){}[r, g, b] = rgb4s(r, g, b, s)"), "if (a) {} _ = rgb4s(r, g, b, s), r = _[0], g = _[1], b = _[2]\r\nvar _", true);
|
|
332
|
-
assert(downLevel(`{c,[c]:b,...a}=a`), `c = a.c, b = a[c], a =
|
|
333
|
-
assert(downLevel(`async()=>name = require("./$split")(name)["join"]("/");`), `function () { return
|
|
332
|
+
assert(downLevel(`{c,[c]:b,...a}=a`), `c = a.c, b = a[c], a = &rest(a, ["c", c])`)
|
|
333
|
+
assert(downLevel(`async()=>name = require("./$split")(name)["join"]("/");`), `function () { return &async(
|
|
334
334
|
function () {
|
|
335
335
|
_0 = require("./$split"); _0 = _0(name); name = _0["join"]("/"); return [name, 2]
|
|
336
336
|
})
|
|
337
337
|
var _0 };`);
|
|
338
338
|
i++//异步或步进函数
|
|
339
|
-
assert(downLevel(`function *(){yield *a}`), `function () { return
|
|
339
|
+
assert(downLevel(`function *(){yield *a}`), `function () { return &aster(
|
|
340
340
|
function () {
|
|
341
341
|
return [9, 8]
|
|
342
342
|
},
|
|
@@ -377,8 +377,8 @@ function () {
|
|
|
377
377
|
return [1, 9]
|
|
378
378
|
})
|
|
379
379
|
var _, _0, _1, _3, _4 }`)
|
|
380
|
-
assert(downLevel(`async function(){}`), `function () { return
|
|
381
|
-
assert(downLevel(`async function(){for(var a of b){Symbol}}`), `function () { return
|
|
380
|
+
assert(downLevel(`async function(){}`), `function () { return &async() }`)
|
|
381
|
+
assert(downLevel(`async function(){for(var a of b){Symbol}}`), `function () { return &async(
|
|
382
382
|
function () {
|
|
383
383
|
return [5, 8]
|
|
384
384
|
},
|
|
@@ -408,13 +408,13 @@ return [1, 9]
|
|
|
408
408
|
})
|
|
409
409
|
var a, _, _0, _2, _3 }`)
|
|
410
410
|
assert(downLevel(`a={async a(){var b =c;return 1}}`), `a = (_ = {},
|
|
411
|
-
_.a = function () { return
|
|
412
|
-
assert(downLevel(`async function(){return 1}`), `function () { return
|
|
413
|
-
assert(downLevel(`async function(a){await a}`), `function (a) { return
|
|
414
|
-
assert(downLevel(`async function(a){return await a}`), `function (a) { return
|
|
415
|
-
assert(downLevel(`async function(a){await a,await b}`), `function (a) { return
|
|
416
|
-
assert(downLevel(`async function(){await a,await b}`), `function () { return
|
|
417
|
-
assert(downLevel(`async function(a){ if(c)await a,await b;else if(s) await c;}`), `function (a) { return
|
|
411
|
+
_.a = function () { return &async(\r\nfunction () {\r\nb = c; return [1, 2]\r\n})\r\nvar b }, _)\r\nvar _`)
|
|
412
|
+
assert(downLevel(`async function(){return 1}`), `function () { return &async(\r\nfunction () {\r\nreturn [1, 2]\r\n}) }`)
|
|
413
|
+
assert(downLevel(`async function(a){await a}`), `function (a) { return &async(\r\nfunction () {\r\n_0 = a; return [_0, 1]\r\n})\r\nvar _0 }`)
|
|
414
|
+
assert(downLevel(`async function(a){return await a}`), `function (a) { return &async(\r\nfunction () {\r\n_0 = a; return [_0, 1]\r\n},\r\nfunction (_) {\r\n_0 = _; return [_0, 2]\r\n})\r\nvar _0 }`)
|
|
415
|
+
assert(downLevel(`async function(a){await a,await b}`), `function (a) { return &async(\r\nfunction () {\r\n_0 = a; return [_0, 1]\r\n},\r\nfunction (_) {\r\n_0 = _; _0 = b; return [_0, 1]\r\n})\r\nvar _0 }`)
|
|
416
|
+
assert(downLevel(`async function(){await a,await b}`), `function () { return &async(\r\nfunction () {\r\n_0 = a; return [_0, 1]\r\n},\r\nfunction (_) {\r\n_0 = _; _0 = b; return [_0, 1]\r\n})\r\nvar _0 }`)
|
|
417
|
+
assert(downLevel(`async function(a){ if(c)await a,await b;else if(s) await c;}`), `function (a) { return &async(
|
|
418
418
|
function () {
|
|
419
419
|
if (!c) return [3, 0]; _0 = a; return [_0, 1]
|
|
420
420
|
},
|
|
@@ -431,8 +431,8 @@ function (_) {
|
|
|
431
431
|
_0 = _; return [1, 0]
|
|
432
432
|
})
|
|
433
433
|
var _0 }`)
|
|
434
|
-
assert(downLevel(`async function(a){ for(var i=1;i<2;i++) await 1 }`), `function (a) { return
|
|
435
|
-
assert(downLevel('async function(){ if(b); else {if (a){}else{location = getRequestProtocol(url) + "//" + location;}}}'), `function () { return
|
|
434
|
+
assert(downLevel(`async function(a){ for(var i=1;i<2;i++) await 1 }`), `function (a) { return &async(\r\nfunction () {\r\ni = 1; return [1, 0]\r\n},\r\nfunction () {\r\n_0 = i < 2; if (!_0) return [2, 0]; _0 = 1; return [_0, 1]\r\n},\r\nfunction (_) {\r\n_0 = _; _0 = i++; return [-1, 0]\r\n})\r\nvar i, _0 }`)
|
|
435
|
+
assert(downLevel('async function(){ if(b); else {if (a){}else{location = getRequestProtocol(url) + "//" + location;}}}'), `function () { return &async(
|
|
436
436
|
function () {
|
|
437
437
|
if (!b) return [1, 0]; return [3, 0]
|
|
438
438
|
},
|
|
@@ -443,7 +443,7 @@ function () {
|
|
|
443
443
|
_0 = getRequestProtocol(url), _0 = _0 + "//", location = _0 + location; return [1, 0]
|
|
444
444
|
})
|
|
445
445
|
var _0 }`);
|
|
446
|
-
assert(downLevel("var{a}=await b"), `return
|
|
446
|
+
assert(downLevel("var{a}=await b"), `return &async(
|
|
447
447
|
function () {
|
|
448
448
|
_0 = b; return [_0, 1]
|
|
449
449
|
},
|
|
@@ -451,7 +451,7 @@ function (_) {
|
|
|
451
451
|
_0 = _; _0 = _0.a; a = _0
|
|
452
452
|
})
|
|
453
453
|
var a, _0`)
|
|
454
|
-
assert(downLevel(`async a=>await a`), `function (a) { return return
|
|
454
|
+
assert(downLevel(`async a=>await a`), `function (a) { return return &async(
|
|
455
455
|
function () {
|
|
456
456
|
_0 = a; return [_0, 1]
|
|
457
457
|
})
|
|
@@ -461,8 +461,8 @@ assert(downLevel(`Object.defineProperty(dis, f.key, {get() {}, set(v) {}})`), `O
|
|
|
461
461
|
_.get = function () {},
|
|
462
462
|
_.set = function (v) {}, _))
|
|
463
463
|
var _`);
|
|
464
|
-
assert(downLevel(`var restq = splice(queue, i, i2 - i, ...a[1], { type: STAMP, text: "=" });`), `var
|
|
465
|
-
var restq = splice["apply"](null, [queue, i, i2 - i]["concat"](
|
|
464
|
+
assert(downLevel(`var restq = splice(queue, i, i2 - i, ...a[1], { type: STAMP, text: "=" });`), `var &slice = Array["prototype"]["slice"];
|
|
465
|
+
var restq = splice["apply"](null, [queue, i, i2 - i]["concat"](&slice["call"](a[1]), [{ type: STAMP, text: "=" }]));`)
|
|
466
466
|
var c = scanner2(`\r\n if (search.length) return null;\r\n return path.join(...pathlist);\r\n`); i++
|
|
467
467
|
c.fix(); i++
|
|
468
468
|
c.break(); i++
|
|
@@ -479,20 +479,20 @@ assert(downLevel(`[{}.b,c]=[1]`), '_ = [1], {}.b = _[0], c = _[1]\r\nvar _')
|
|
|
479
479
|
assert(downLevel(`[{}.b]=[1]`), '({}).b = [1][0]')
|
|
480
480
|
assert(downLevel(`[[[a[b]]]]=[1]`), 'a[b] = [1][0][0][0]')
|
|
481
481
|
assert(downLevel(`[[[{}[b]]]]=[1]`), '({})[b] = [1][0][0][0]')
|
|
482
|
-
assert(downLevel(`[...a[b]]=[1]`), 'var
|
|
483
|
-
assert(downLevel(`[a,...{length}]=[1]`), 'var
|
|
484
|
-
assert(downLevel(`[...{length}]=[1]`), `var
|
|
485
|
-
_ = [1], _0 =
|
|
482
|
+
assert(downLevel(`[...a[b]]=[1]`), 'var &slice = Array["prototype"]["slice"];\r\n_ = [1], a[b] = &slice["call"](_, 0)\r\nvar _')
|
|
483
|
+
assert(downLevel(`[a,...{length}]=[1]`), 'var &slice = Array["prototype"]["slice"];\r\n_ = [1], a = _[0], _0 = &slice["call"](_, 1), length = _0.length\r\nvar _, _0')
|
|
484
|
+
assert(downLevel(`[...{length}]=[1]`), `var &slice = Array["prototype"]["slice"];
|
|
485
|
+
_ = [1], _0 = &slice["call"](_, 0), length = _0.length
|
|
486
486
|
var _, _0`)
|
|
487
|
-
assert(downLevel(`[...{}[a]]=[1]`), `var
|
|
488
|
-
_ = [1], {}[a] =
|
|
487
|
+
assert(downLevel(`[...{}[a]]=[1]`), `var &slice = Array["prototype"]["slice"];
|
|
488
|
+
_ = [1], {}[a] = &slice["call"](_, 0)
|
|
489
489
|
var _`)
|
|
490
|
-
assert(downLevel(`,{...{}[a]}=[1]`), `_ = [1], {}[a] =
|
|
490
|
+
assert(downLevel(`,{...{}[a]}=[1]`), `_ = [1], {}[a] = &rest(_, [])
|
|
491
491
|
var _`)
|
|
492
|
-
assert(downLevel(`var res=null,res2=1,{...{}[a]}=[1]`), `var res = null, res2 = 1, _ = [1], {}[a] =
|
|
492
|
+
assert(downLevel(`var res=null,res2=1,{...{}[a]}=[1]`), `var res = null, res2 = 1, _ = [1], {}[a] = &rest(_, [])
|
|
493
493
|
var _`);
|
|
494
|
-
assert(downLevel(`var res=null,{...{}[a]}=[1]`), `var res = null, _ = [1], {}[a] =
|
|
494
|
+
assert(downLevel(`var res=null,{...{}[a]}=[1]`), `var res = null, _ = [1], {}[a] = &rest(_, [])
|
|
495
495
|
var _`)
|
|
496
|
-
assert(downLevel(`,{b,...{}[a]}=[1]`), `_ = [1], b = _.b, {}[a] =
|
|
496
|
+
assert(downLevel(`,{b,...{}[a]}=[1]`), `_ = [1], b = _.b, {}[a] = &rest(_, ["b"])
|
|
497
497
|
var _`)
|
|
498
498
|
assert(downLevel(`var penddings = {}, circle = [], module_keys = [];`), `var penddings = {}, circle = [], module_keys = [];`)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
function till(n) {
|
|
2
|
+
if (/^[&\^%\?@#]/.test(n)) {
|
|
3
|
+
var s = n = n.replace(/[&\^%\?@#]/g, '_');
|
|
4
|
+
var i = 0;
|
|
5
|
+
while (n in this) {
|
|
6
|
+
n = s + i++;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
return n;
|
|
10
|
+
}
|
|
11
|
+
module.exports = function nametill(names, prevent) {
|
|
12
|
+
return names.map(till, prevent);
|
|
13
|
+
}
|
package/coms/compile/polyfill.js
CHANGED
|
@@ -46,14 +46,14 @@ var harness = await async function () {
|
|
|
46
46
|
}();
|
|
47
47
|
await async function () {
|
|
48
48
|
extend(harness, {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
&aster,
|
|
50
|
+
&async,
|
|
51
|
+
&asyncAster,
|
|
52
|
+
&extends,
|
|
53
53
|
isFunction,
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
54
|
+
&restIter,
|
|
55
|
+
&rest,
|
|
56
|
+
&exec,
|
|
57
57
|
})
|
|
58
58
|
extend(global, harness);
|
|
59
59
|
var rest = [path.join(testpath, 'test')];
|
|
@@ -93,7 +93,7 @@ await async function () {
|
|
|
93
93
|
await queue.call(testFiles, async function (f, i) {
|
|
94
94
|
var runText = async function (text) {
|
|
95
95
|
/**
|
|
96
|
-
*
|
|
96
|
+
* &type {vm.RunningCodeInNewContextOptions}
|
|
97
97
|
*/
|
|
98
98
|
var ctxOptions = {
|
|
99
99
|
timeout: 1000,
|
package/coms/compile/scanner2.js
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
2
|
+
var createShortName = require("./namelist");
|
|
3
|
+
var createShortList = function (keys, prevent) {
|
|
4
|
+
return createShortName(keys.length, prevent);
|
|
5
|
+
};
|
|
6
|
+
var renameHashName = require("./nametill");
|
|
7
|
+
var createNameList = createShortList;
|
|
3
8
|
var Html = require("./Html");
|
|
4
9
|
var Javascript = require("./Javascript");
|
|
5
10
|
const {
|
|
@@ -37,11 +42,20 @@ var compress = function (scoped, maped = Object.create(null)) {
|
|
|
37
42
|
var keys = Object.keys(map);
|
|
38
43
|
keys.sort((a, b) => used[b].length - used[a].length);
|
|
39
44
|
if (keys.length) {
|
|
40
|
-
var names =
|
|
45
|
+
var names = createNameList(keys, __prevent);
|
|
46
|
+
var umap = Array(keys.length);
|
|
41
47
|
for (var cx = 0, dx = keys.length; cx < dx; cx++) {
|
|
42
48
|
var k = keys[cx];
|
|
43
49
|
var name = names[cx];
|
|
50
|
+
umap[cx] = used[k];
|
|
44
51
|
rename(used, k, name);
|
|
52
|
+
delete used[k];
|
|
53
|
+
delete map[k];
|
|
54
|
+
}
|
|
55
|
+
for (var cx = 0, dx = names.length; cx < dx; cx++) {
|
|
56
|
+
var n = names[cx];
|
|
57
|
+
map[n] = true;
|
|
58
|
+
used[n] = umap[cx];
|
|
45
59
|
}
|
|
46
60
|
}
|
|
47
61
|
if (scoped.length) {
|
|
@@ -138,7 +152,7 @@ class Code extends Array {
|
|
|
138
152
|
if (k in occurs) continue;
|
|
139
153
|
occurs[k] = true;
|
|
140
154
|
}
|
|
141
|
-
for (var k in scoped.lets) {
|
|
155
|
+
if (scoped.lets !== scoped.vars) for (var k in scoped.lets) {
|
|
142
156
|
if (k in occurs) continue;
|
|
143
157
|
occurs[k] = true;
|
|
144
158
|
}
|
|
@@ -167,6 +181,11 @@ class Code extends Array {
|
|
|
167
181
|
if (this._scoped) extend(this.envs, envs);
|
|
168
182
|
return this;
|
|
169
183
|
}
|
|
184
|
+
revar() {
|
|
185
|
+
createNameList = renameHashName;
|
|
186
|
+
compress(this.scoped);
|
|
187
|
+
createNameList = createShortList;
|
|
188
|
+
}
|
|
170
189
|
// 压缩
|
|
171
190
|
press(keepspace) {
|
|
172
191
|
this.keepspace = keepspace;
|
package/coms/compile/unstruct.js
CHANGED
|
@@ -134,13 +134,13 @@ var _withget = function (text) {
|
|
|
134
134
|
if (index < 0) index = text.length;
|
|
135
135
|
var name = text.slice(0, index);
|
|
136
136
|
var prop = text.slice(index);
|
|
137
|
-
return rescan`${patchMark}
|
|
137
|
+
return rescan`${patchMark + "wget"}(${`"${name}"`},[${_evals()}],${name})${prop}`;
|
|
138
138
|
};
|
|
139
139
|
var _withset = function (text, tmpname, valname) {
|
|
140
140
|
var index = text.indexOf(".");
|
|
141
141
|
if (index < 0) index = text.length;
|
|
142
142
|
var name = text.slice(0, index);
|
|
143
|
-
return rescan`if(${tmpname}=${patchMark}
|
|
143
|
+
return rescan`if(${tmpname}=${patchMark + "with"}(${`"${name}"`},[${_evals()}]))${tmpname}.${text}=${valname};else ${text}=${valname};`;
|
|
144
144
|
};
|
|
145
145
|
var _switch = function (body, cx, unblock, result, getname) {
|
|
146
146
|
var o = body[cx];
|
|
@@ -1404,7 +1404,7 @@ var strip = false;
|
|
|
1404
1404
|
var canbeTemp = function (body) {
|
|
1405
1405
|
return _canbeTemp(body, strip);
|
|
1406
1406
|
};
|
|
1407
|
-
var patchMark = '';
|
|
1407
|
+
var patchMark = '&';
|
|
1408
1408
|
module.exports = function (body, newname, ret) {
|
|
1409
1409
|
strip = body.strip;
|
|
1410
1410
|
var patchMark_ = patchMark;
|
|
@@ -85,7 +85,7 @@ test("switch(a){case 1:break;case 2:break;}", "if (a === 1) return [1, 0]; if (a
|
|
|
85
85
|
test("switch(a){case 1:case 2:break;}", "if (a === 1) return [1, 0]; if (a === 2) return [1, 0]", true);
|
|
86
86
|
test("switch(a){case 1:case 2:x=1;}", "if (a === 1) return [1, 0]; if (a === 2) return [1, 0]; return [2, 0];\r\n x = 1; return [1, 0]", true);
|
|
87
87
|
test("switch(a){case 1:case 2:x=1;}", "if (a === 1) return [1, 0]; if (a === 2) return [1, 0]; return [2, 0];\r\n x = 1; return [1, 0]", true);
|
|
88
|
-
test("with(a){ a = 1}", `if (_ =
|
|
88
|
+
test("with(a){ a = 1}", `if (_ = &with("a", [a])) _.a = 1; else a = 1;`, true);
|
|
89
89
|
test("try{a=2+1}catch(e){return;}", 'return [65537, 7];\r\n a = 2 + 1; return [0, 9];\r\n e = @; return [undefined, 2];\r\n return [1, 9]', true);
|
|
90
90
|
test("try{a=2+1}catch(e){}", 'return [1, 7];\r\n a = 2 + 1; return [0, 9];\r\n return [1, 9]', true);
|
|
91
91
|
test("try{a=2+1}catch(e){a=3}", 'return [65537, 7];\r\n a = 2 + 1; return [0, 9];\r\n e = @; a = 3; return [0, 9];\r\n return [1, 9]', true);
|
|
@@ -463,8 +463,15 @@ var Method = function () {
|
|
|
463
463
|
if (!this.base) this.base = base;
|
|
464
464
|
vlist.push(valueMap);
|
|
465
465
|
var argDefaults = this.args.defaults;
|
|
466
|
+
var ipd = 0;
|
|
466
467
|
this.args.forEach((k, i) => {
|
|
467
|
-
var
|
|
468
|
+
var p = i + ipd;
|
|
469
|
+
if (/^\.\.\.@/i.test(k)) {
|
|
470
|
+
var a = Array.prototype.slice.call(arguments, p, i + arguments.length - this.args.length + 1);
|
|
471
|
+
ipd += a.length - 1;
|
|
472
|
+
k = k.slice(3);
|
|
473
|
+
}
|
|
474
|
+
else var a = arguments[p];
|
|
468
475
|
if (a === undefined || a === null) a = seprateFunc(calcvars(argDefaults[k])).map(evalproc).join('');
|
|
469
476
|
valueMap[k] = a;
|
|
470
477
|
});
|
|
@@ -497,17 +504,18 @@ var killneg = function (v, n) {
|
|
|
497
504
|
v = n + v;
|
|
498
505
|
}
|
|
499
506
|
}
|
|
507
|
+
else if (n === '...');
|
|
500
508
|
else if (n) v = n + v;
|
|
501
509
|
return v;
|
|
502
510
|
};
|
|
503
511
|
var calcvars = function (v) {
|
|
504
512
|
var decode = /^['"`]/.test(v) ? strings.decode : a => a;
|
|
505
|
-
return v.replace(/(
|
|
513
|
+
return v.replace(/(^\-|\.\.\.)?(@[^\s\{\}\(\)\[\]\:\+\*\/,;\!\>\$\=\&\%\#\@'"`\?\.\/\|~#]+|@\{[^\}@]*\})/g, function (_, n, m) {
|
|
506
514
|
var value = getFromScopeList(m, vlist, m);
|
|
507
515
|
value = decode(value);
|
|
508
516
|
value = killneg(value, n);
|
|
509
517
|
return value;
|
|
510
|
-
}).replace(/(^|\s|[\]\)\(\[\+\*\/,;]
|
|
518
|
+
}).replace(/(^|\s|[\]\)\(\[\+\*\/,;]|\-|\.\.\.)(?:var\s*\(([\s\S]*?)\)|(--\S+))/g, function (m, q, a, b) {
|
|
511
519
|
var v = getFromScopeList(b || a.trim(), vlist, m.slice(q.length));
|
|
512
520
|
v = killneg(v, q);
|
|
513
521
|
return v;
|
|
@@ -564,7 +572,7 @@ var eval2 = function (props) {
|
|
|
564
572
|
var [, name, args] = match;
|
|
565
573
|
args = createArgMap(args);
|
|
566
574
|
p.args = args;
|
|
567
|
-
p.reg = new RegExp(args.join("|") + /|@\{[^\}@]+\}/.source, 'g');
|
|
575
|
+
p.reg = new RegExp(args.map(a => /(?:\.\.\.)?/.source + a.replace(/^\.\.\./, '')).join("|") + /|@\{[^\}@]+\}/.source, 'g');
|
|
568
576
|
if (!methods[name]) methods[name] = [];
|
|
569
577
|
var argDefaults = args.defaults;
|
|
570
578
|
Object.keys(argDefaults).forEach(k => {
|
|
@@ -87,7 +87,10 @@ assert(素馨(`a{a:extract(2 3,2)}`), `a{a:3;}`);
|
|
|
87
87
|
assert(素馨(`value: range(10px, 30px, 10);`, '', true), `value:10px 20px 30px;`);
|
|
88
88
|
assert(素馨(`value: range(4);`, '', true), `value:1 2 3 4;`);
|
|
89
89
|
assert(素馨(`@a:-1;b{a:-@a}`, '', true), `b{a:1;}`);
|
|
90
|
+
assert(素馨(`@b(@c,...@d,@e){each(@d,(@a){a:@a})};@b(1,2,3,4,5,3,4)`, '', true), `a:2;a:3;a:4;a:5;a:3;`);
|
|
90
91
|
assert(素馨(`--mwidth:0px;--bwidth:2px;--qwidth: var(--mwidth)+var(--bwidth);width:--qwidth`, '', true), `width:2px;`);
|
|
92
|
+
assert(素馨(`a{--a:1px;padding:var(--a) -var(--a);}`, '', true), `a{padding:1px -1px;}`);
|
|
93
|
+
assert(素馨(`a{@a:1px;padding:@a -@a;}`, '', true), `a{padding:1px -1px;}`);
|
|
91
94
|
assert(scanner2(`-0.2em .3em -0.2em 0`, new 素馨.素心)[0].text, '-0.2em');
|
|
92
95
|
assert(scanner2(`-0.2em .3em -0.2em 0`, new 素馨.素心)[0].isdigit, true);
|
|
93
96
|
assert(scanner2(`-0.2em .3em -0.2em 0`, new 素馨.素心)[2].text, ".3em");
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
<fileitem type_="d.type" @mouseenter="startMarquee(sp)" @mouseleave="stopMarquee(sp)"
|
|
2
|
-
@touchend="stopMarquee(sp)">
|
|
1
|
+
<fileitem type_="d.type" ext+ @mouseenter="startMarquee(sp)" @mouseleave="stopMarquee(sp)"
|
|
2
|
+
@touchstart="startMarquee(sp)" @touchend="stopMarquee(sp)">
|
|
3
3
|
<template -src="d.isfolder?icons.folder:icons.file"></template>
|
|
4
|
-
<span #sp ng-text=d.name></span>
|
|
5
|
-
<p -if="d.pending" keep
|
|
4
|
+
<span #sp name ng-text=d.name></span>
|
|
5
|
+
<p -if="d.pending" keep>
|
|
6
6
|
<r -style="{width:(d.percent*100).toFixed(4)+'%'}"></r>
|
|
7
7
|
</p>
|
|
8
|
+
<span ext? -if="!d.isfolder"></span>
|
|
8
9
|
</fileitem>
|
|
@@ -8,6 +8,7 @@ class Fileitem {
|
|
|
8
8
|
var e = Fileitem.prototype;
|
|
9
9
|
e.startMarquee = function (sp) {
|
|
10
10
|
if (sp.scrollWidth <= sp.clientWidth) return;
|
|
11
|
+
clearInterval(sp.mq);
|
|
11
12
|
sp.mq = setInterval(function () {
|
|
12
13
|
clearInterval(sp.mq);
|
|
13
14
|
sp.mq = setInterval(function () {
|
|
@@ -17,7 +18,7 @@ e.startMarquee = function (sp) {
|
|
|
17
18
|
}, 16);
|
|
18
19
|
}, 400);
|
|
19
20
|
sp.setAttribute("marquee", '');
|
|
20
|
-
sp.scrollLeft = sp.clientWidth;
|
|
21
|
+
sp.scrollLeft = sp.clientWidth - parseFloat(getComputedStyle(sp).paddingLeft);
|
|
21
22
|
};
|
|
22
23
|
e.stopMarquee = function (sp) {
|
|
23
24
|
clearInterval(sp.mq);
|
|
@@ -29,6 +30,9 @@ function fileitem(elem) {
|
|
|
29
30
|
elem.innerHTML = template;
|
|
30
31
|
var e = elem.children[0];
|
|
31
32
|
e.$scope = new Fileitem;
|
|
33
|
+
var ext = /\.([^\.]+)$/.exec(elem.$scope.d.name);
|
|
34
|
+
if (ext) e.$scope.ext = ext[1];
|
|
35
|
+
else e.$scope.ext = '';
|
|
32
36
|
extend(e.$scope, elem.$scope);
|
|
33
37
|
return e;
|
|
34
38
|
}
|