efront 4.0.11 → 4.0.13
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 +64 -46
- package/{docs → apps}/drequest/index.html +1 -1
- package/{docs → apps}/drequest/main.js +5 -5
- package/coms/compile/Javascript.js +4 -2
- package/coms/compile/Program.js +0 -2
- package/coms/compile/unstruct.js +63 -41
- package/coms/compile/unstruct_test.js +4 -2
- package/package.json +1 -1
- package/public/efront.js +1 -1
- package/_envs/setup.bat +0 -10
- package/apis/zimoli/file/checkPermission.js +0 -10
- package/apis/zimoli/file/info.js +0 -68
- package/apis/zimoli/file/root.js +0 -2
- package/apis/zimoli/server/count.js +0 -4
- package/apis/zimoli/user/login.js +0 -12
- package/apis/zimoli/yuanfen/suggest.js +0 -8
- package/coms/zimoli/editor.js +0 -85
- package/coms/zimoli/editor.less +0 -64
- package/data/i18n/zh-cn.json +0 -21
- package/docs/canvas/main.js +0 -5
- package/docs/compare/index.html +0 -14
- package/docs/compare/main.js +0 -7
- package/docs/editor/index.html +0 -30
- package/docs/editor/main.js +0 -5
- package/docs/editor/main.less +0 -0
- /package/{docs → apps}/sample/mycolor.html +0 -0
|
@@ -1,137 +1,155 @@
|
|
|
1
|
-
- zh-CN:
|
|
1
|
+
- zh-CN: 文件路径
|
|
2
|
+
en: File Path
|
|
3
|
+
|
|
4
|
+
- zh-CN: 用户名
|
|
5
|
+
en: user name
|
|
6
|
+
|
|
7
|
+
- zh-CN: 游客
|
|
8
|
+
en: tourist
|
|
9
|
+
|
|
10
|
+
- zh-CN: 登录中
|
|
11
|
+
en: Logging in
|
|
12
|
+
|
|
13
|
+
- zh-CN: 确定
|
|
14
|
+
en: confirm
|
|
15
|
+
|
|
16
|
+
- zh-CN: 取消
|
|
17
|
+
en: cancel
|
|
18
|
+
|
|
19
|
+
- zh-CN: 服务器异常$1
|
|
2
20
|
en: Server Exception $1
|
|
3
21
|
|
|
4
|
-
- zh-CN:
|
|
22
|
+
- zh-CN: $1之前需要使用$2命令在$3上设置$4
|
|
5
23
|
en: Before $1, you need to use the $2 command to set $4 on $3
|
|
6
24
|
|
|
7
|
-
- zh-CN:
|
|
25
|
+
- zh-CN: 请输入服务器密码
|
|
8
26
|
en: Please enter the server password
|
|
9
27
|
|
|
10
|
-
- zh-CN:
|
|
28
|
+
- zh-CN: 登录
|
|
11
29
|
en: Sign in
|
|
12
30
|
|
|
13
|
-
- zh-CN:
|
|
31
|
+
- zh-CN: 文本超长,无法翻译
|
|
14
32
|
en: The text is too long to be translated
|
|
15
33
|
|
|
16
|
-
- zh-CN:
|
|
34
|
+
- zh-CN: 没有权限!
|
|
17
35
|
en: No permission!
|
|
18
36
|
|
|
19
|
-
- zh-CN:
|
|
37
|
+
- zh-CN: 未找到指定的资源
|
|
20
38
|
en: The specified resource was not found
|
|
21
39
|
|
|
22
|
-
- zh-CN:
|
|
40
|
+
- zh-CN: 原始名称
|
|
23
41
|
en: Original Name
|
|
24
42
|
|
|
25
|
-
- zh-CN:
|
|
43
|
+
- zh-CN: 输入新名称
|
|
26
44
|
en: Enter a new name
|
|
27
45
|
|
|
28
|
-
- zh-CN:
|
|
46
|
+
- zh-CN: 请过一段时间再试
|
|
29
47
|
en: Please try again later
|
|
30
48
|
|
|
31
|
-
- zh-CN:
|
|
49
|
+
- zh-CN: 服务器取消了您的请求
|
|
32
50
|
en: The server canceled your request
|
|
33
51
|
|
|
34
|
-
- zh-CN:
|
|
52
|
+
- zh-CN: 文件
|
|
35
53
|
en: file
|
|
36
54
|
|
|
37
|
-
- zh-CN:
|
|
55
|
+
- zh-CN: 键名
|
|
38
56
|
en: Key Name
|
|
39
57
|
|
|
40
|
-
- zh-CN:
|
|
58
|
+
- zh-CN: 显示名
|
|
41
59
|
en: Display Name
|
|
42
60
|
|
|
43
|
-
- zh-CN:
|
|
61
|
+
- zh-CN: 密钥
|
|
44
62
|
en: secret key
|
|
45
63
|
|
|
46
|
-
- zh-CN:
|
|
64
|
+
- zh-CN: 备注
|
|
47
65
|
en: remarks
|
|
48
66
|
|
|
49
|
-
- zh-CN:
|
|
67
|
+
- zh-CN: 任务ID
|
|
50
68
|
en: Task ID
|
|
51
69
|
|
|
52
|
-
- zh-CN:
|
|
70
|
+
- zh-CN: 任务名
|
|
53
71
|
en: Task Name
|
|
54
72
|
|
|
55
|
-
- zh-CN:
|
|
73
|
+
- zh-CN: 是否启用
|
|
56
74
|
en: Enabled or not
|
|
57
75
|
|
|
58
|
-
- zh-CN:
|
|
76
|
+
- zh-CN: 任务代码
|
|
59
77
|
en: Task Code
|
|
60
78
|
|
|
61
|
-
- zh-CN:
|
|
79
|
+
- zh-CN: 标识
|
|
62
80
|
en: identification
|
|
63
81
|
|
|
64
|
-
- zh-CN:
|
|
82
|
+
- zh-CN: 应用名
|
|
65
83
|
en: App Name
|
|
66
84
|
|
|
67
|
-
- zh-CN:
|
|
85
|
+
- zh-CN: 路径
|
|
68
86
|
en: route
|
|
69
87
|
|
|
70
|
-
- zh-CN:
|
|
88
|
+
- zh-CN: 代理路径
|
|
71
89
|
en: Proxy Path
|
|
72
90
|
|
|
73
|
-
- zh-CN:
|
|
91
|
+
- zh-CN: 二维码
|
|
74
92
|
en: QR code
|
|
75
93
|
|
|
76
|
-
- zh-CN:
|
|
94
|
+
- zh-CN: 真实路径
|
|
77
95
|
en: Real path
|
|
78
96
|
|
|
79
|
-
- zh-CN:
|
|
97
|
+
- zh-CN: 动作
|
|
80
98
|
en: action
|
|
81
99
|
|
|
82
|
-
- zh-CN:
|
|
100
|
+
- zh-CN: 状态
|
|
83
101
|
en: state
|
|
84
102
|
|
|
85
|
-
- zh-CN:
|
|
103
|
+
- zh-CN: 地址
|
|
86
104
|
en: address
|
|
87
105
|
|
|
88
|
-
- zh-CN:
|
|
106
|
+
- zh-CN: 地理位置
|
|
89
107
|
en: geographical position
|
|
90
108
|
|
|
91
|
-
- zh-CN:
|
|
109
|
+
- zh-CN: 启动时间
|
|
92
110
|
en: Start time
|
|
93
111
|
|
|
94
|
-
- zh-CN:
|
|
112
|
+
- zh-CN: 端口
|
|
95
113
|
en: port
|
|
96
114
|
|
|
97
|
-
- zh-CN:
|
|
115
|
+
- zh-CN: 版本
|
|
98
116
|
en: edition
|
|
99
117
|
|
|
100
|
-
- zh-CN:
|
|
118
|
+
- zh-CN: 进程
|
|
101
119
|
en: process
|
|
102
120
|
|
|
103
|
-
- zh-CN:
|
|
121
|
+
- zh-CN: 访问量
|
|
104
122
|
en: Visits
|
|
105
123
|
|
|
106
|
-
- zh-CN:
|
|
124
|
+
- zh-CN: 房间名
|
|
107
125
|
en: Room name
|
|
108
126
|
|
|
109
|
-
- zh-CN:
|
|
127
|
+
- zh-CN: 数值
|
|
110
128
|
en: numerical value
|
|
111
129
|
|
|
112
|
-
- zh-CN:
|
|
130
|
+
- zh-CN: 文本
|
|
113
131
|
en: text
|
|
114
132
|
|
|
115
|
-
- zh-CN:
|
|
133
|
+
- zh-CN: 字典ID
|
|
116
134
|
en: Dictionary ID
|
|
117
135
|
|
|
118
|
-
- zh-CN:
|
|
136
|
+
- zh-CN: 字典名
|
|
119
137
|
en: Dictionary name
|
|
120
138
|
|
|
121
|
-
- zh-CN:
|
|
139
|
+
- zh-CN: 字典数据
|
|
122
140
|
en: Dictionary data
|
|
123
141
|
|
|
124
|
-
- zh-CN:
|
|
142
|
+
- zh-CN: 名称
|
|
125
143
|
en: name
|
|
126
144
|
|
|
127
|
-
- zh-CN:
|
|
145
|
+
- zh-CN: 服务器
|
|
128
146
|
en: The server
|
|
129
147
|
|
|
130
|
-
- zh-CN:
|
|
148
|
+
- zh-CN: 服务器地址
|
|
131
149
|
en: server address
|
|
132
150
|
|
|
133
|
-
- zh-CN:
|
|
151
|
+
- zh-CN: 密码
|
|
134
152
|
en: password
|
|
135
153
|
|
|
136
|
-
- zh-CN:
|
|
154
|
+
- zh-CN: 这是一个空白项目
|
|
137
155
|
en: This is a blank project
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
titlebar("请求计时工具", [], false);
|
|
2
|
-
var _input =
|
|
2
|
+
var _input = input();
|
|
3
3
|
css(_input, "width:100%;height:50px;margin:10px 0;");
|
|
4
|
-
var request_time_count =
|
|
4
|
+
var request_time_count = _input.cloneNode();
|
|
5
5
|
request_time_count.setAttribute("placeholder", "输入请求次数");
|
|
6
|
-
var request_time_url =
|
|
6
|
+
var request_time_url = _input.cloneNode();
|
|
7
7
|
request_time_url.setAttribute("placeholder", "输入url");
|
|
8
|
-
var request_time_label =
|
|
8
|
+
var request_time_label = div();
|
|
9
9
|
var request_time_button = button("请求");
|
|
10
10
|
var request_stop_button = button("停止");
|
|
11
11
|
css(request_time_button, "background-color:#f34;width:100%;height:50px;margin:10px 0;color:#fff;")
|
|
@@ -45,7 +45,7 @@ onclick(request_time_button, request)
|
|
|
45
45
|
onclick(request_stop_button, function () {
|
|
46
46
|
stoped = true;
|
|
47
47
|
});
|
|
48
|
-
var page =
|
|
48
|
+
var page = div();
|
|
49
49
|
css(page, "padding-top:50px;");
|
|
50
50
|
appendChild(page, request_time_count, request_time_label, request_time_url, request_time_button, request_stop_button);
|
|
51
51
|
function main() {
|
|
@@ -35,7 +35,7 @@ instanceof`.trim().split(/[,\s]+/);
|
|
|
35
35
|
class Javascript extends Program {
|
|
36
36
|
straps = straps;
|
|
37
37
|
value_reg = /^(false|true|null|Infinity|NaN|undefined|eval)$/
|
|
38
|
-
transive_reg = /^(new|var|let|const|yield|void|in|of|typeof|delete|case|return|await|
|
|
38
|
+
transive_reg = /^(new|var|let|const|yield|void|in|of|typeof|delete|case|return|await|default|instanceof|throw|extends|import|from)$/
|
|
39
39
|
strapexp_reg = /^(new|void|typeof|delete|class|function|await)/;
|
|
40
40
|
forceend_reg = /^(return|yield|break|continue|debugger)$/;
|
|
41
41
|
classstrap_reg = /^(class|function|async)$/;
|
|
@@ -571,7 +571,9 @@ var removeExport = function (c, i, code) {
|
|
|
571
571
|
code.splice(i + 1, 0, ...scan(`=`));
|
|
572
572
|
var nn = n.next;
|
|
573
573
|
var d = nn.text;
|
|
574
|
-
if (used[d]) used[d].forEach(a =>
|
|
574
|
+
if (used[d]) used[d].forEach(a => {
|
|
575
|
+
if (!a.kind) a.text = `exports.${d}`;
|
|
576
|
+
});
|
|
575
577
|
delete used[d];
|
|
576
578
|
delete envs[d];
|
|
577
579
|
return;
|
package/coms/compile/Program.js
CHANGED
|
@@ -151,7 +151,6 @@ class Program {
|
|
|
151
151
|
forceend_reg = /^(return|break|continue)$/;
|
|
152
152
|
classstrap_reg = /^(class)$/;
|
|
153
153
|
extends_reg = /^(extends)$/;
|
|
154
|
-
export_reg = /^(export)$/;
|
|
155
154
|
spaces = spaceDefined;
|
|
156
155
|
nocase = false
|
|
157
156
|
lastIndex = 0
|
|
@@ -585,7 +584,6 @@ class Program {
|
|
|
585
584
|
}
|
|
586
585
|
else if (last.type === STRAP) {
|
|
587
586
|
if (last.isend);
|
|
588
|
-
else if (this.export_reg.test(last.text));
|
|
589
587
|
else scope.isObject = queue.inExpress;
|
|
590
588
|
}
|
|
591
589
|
}
|
package/coms/compile/unstruct.js
CHANGED
|
@@ -454,6 +454,12 @@ var _invoke = function (t, getname) {
|
|
|
454
454
|
var bx = 0;
|
|
455
455
|
for (var cx = 0; cx < t.length; cx++) {
|
|
456
456
|
var o = t[cx];
|
|
457
|
+
if (o.type === STRAP && o.text === 'function') {
|
|
458
|
+
while (o && o.entry !== "{") o = o.next;
|
|
459
|
+
cx = t.indexOf(o, cx);
|
|
460
|
+
continue;
|
|
461
|
+
}
|
|
462
|
+
|
|
457
463
|
if (needbreak(o)) {
|
|
458
464
|
var s = splice(t, bx, cx + 1 - bx);
|
|
459
465
|
if (cx > 0) s.name = s[0].text;
|
|
@@ -510,7 +516,7 @@ var _invoke = function (t, getname) {
|
|
|
510
516
|
nameindex++;
|
|
511
517
|
}
|
|
512
518
|
nameindex = _nameindex;
|
|
513
|
-
if (!cache.length) continue;
|
|
519
|
+
// if (!cache.length) continue;
|
|
514
520
|
if (queue.length) flushqueue(result, queue), queue = [];
|
|
515
521
|
for (var c of cache) pushstep(result, c);
|
|
516
522
|
cache = [];
|
|
@@ -579,8 +585,28 @@ var patchname = function (d, getname) {
|
|
|
579
585
|
}
|
|
580
586
|
};
|
|
581
587
|
var clone = function (o) {
|
|
582
|
-
return Object.assign({}, o, { prev: null, next: null });
|
|
588
|
+
return Object.assign(o instanceof Array ? [] : {}, o, { prev: null, next: null });
|
|
583
589
|
};
|
|
590
|
+
var popass = function (explist) {
|
|
591
|
+
var asn = explist.pop();
|
|
592
|
+
var n;
|
|
593
|
+
if (!asn.ret_ && asn.length) {
|
|
594
|
+
asn = createExpressList(asn);
|
|
595
|
+
if (asn.length > 1) {
|
|
596
|
+
explist.push(...asn.slice(0, asn.length - 1));
|
|
597
|
+
asn = asn.pop();
|
|
598
|
+
}
|
|
599
|
+
else {
|
|
600
|
+
n = true;
|
|
601
|
+
asn = asn.pop();
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
else {
|
|
605
|
+
n = asn.name;
|
|
606
|
+
asn = [{ type: EXPRESS, text: n }];
|
|
607
|
+
}
|
|
608
|
+
return [asn, n];
|
|
609
|
+
}
|
|
584
610
|
var popexp = function (explist) {
|
|
585
611
|
var asn = explist[explist.length - 1];
|
|
586
612
|
var n;
|
|
@@ -605,15 +631,19 @@ var popexp = function (explist) {
|
|
|
605
631
|
return [asn, n];
|
|
606
632
|
}
|
|
607
633
|
var ternary = function (body, getname, ret) {
|
|
634
|
+
var eqused = 0;
|
|
608
635
|
var getnextname = function (i) {
|
|
609
|
-
return getname(i +
|
|
636
|
+
return getname(i + eqused);
|
|
610
637
|
};
|
|
611
638
|
var question = [];
|
|
612
|
-
var
|
|
639
|
+
var exphead = [];
|
|
613
640
|
var equalsend = 0;
|
|
614
641
|
var skip = 0;
|
|
615
642
|
var equcount = 0;
|
|
616
643
|
var hascalcequ = false;
|
|
644
|
+
var equals = [];
|
|
645
|
+
var explist = [];
|
|
646
|
+
var hasquestion = false;
|
|
617
647
|
for (var cx = 0, dx = body.length; cx < dx; cx++) {
|
|
618
648
|
var o = body[cx];
|
|
619
649
|
if (o.type === STRAP && /^(var|let|const)$/.test(o.text)) {
|
|
@@ -630,53 +660,59 @@ var ternary = function (body, getname, ret) {
|
|
|
630
660
|
if (!question.length) {
|
|
631
661
|
var b = body.slice(equalsend, bx);
|
|
632
662
|
relink(b);
|
|
633
|
-
var c = toqueue(body.slice(bx + 1, cx),
|
|
634
|
-
var d = toqueue(body.slice(cx + 1),
|
|
635
|
-
patchname(c,
|
|
636
|
-
patchname(d,
|
|
663
|
+
var c = toqueue(body.slice(bx + 1, cx), getnextname, true);
|
|
664
|
+
var d = toqueue(body.slice(cx + 1), getnextname, true);
|
|
665
|
+
patchname(c, getnextname);
|
|
666
|
+
patchname(d, getnextname);
|
|
637
667
|
pushstep(d, stepReturn(1, 0, d));
|
|
638
668
|
pushstep(c, stepReturn(d.length + 1, 0, c));
|
|
639
|
-
pushstep(
|
|
640
|
-
b = ternary(b,
|
|
641
|
-
for (var b of b) pushstep(
|
|
669
|
+
pushstep(explist, scanner2(`if(${getCondition(b, function (b) {
|
|
670
|
+
b = ternary(b, getnextname, true);
|
|
671
|
+
for (var b of b) pushstep(explist, b);
|
|
642
672
|
return b;
|
|
643
673
|
}, true)})return [1,0]`));
|
|
644
|
-
var q =
|
|
645
|
-
var qi =
|
|
674
|
+
var q = explist[explist.length - 1];
|
|
675
|
+
var qi = explist.length - 1;
|
|
646
676
|
var qe = q[q.length - 1];
|
|
647
677
|
if (c.length) {
|
|
648
|
-
pushstep(
|
|
649
|
-
|
|
678
|
+
pushstep(explist, c[0]);
|
|
679
|
+
explist.push(...c.slice(1));
|
|
650
680
|
}
|
|
651
|
-
qe.text = String(
|
|
652
|
-
|
|
681
|
+
qe.text = String(explist.length - qi);
|
|
682
|
+
explist.push(...d);
|
|
683
|
+
hasquestion = true;
|
|
684
|
+
break;
|
|
653
685
|
}
|
|
654
686
|
}
|
|
655
687
|
else if (powermap[o.text] === powermap["="]) {
|
|
688
|
+
var ass = toqueue(body.slice(equalsend, cx), getnextname, false);
|
|
689
|
+
var [ass1, n = ++eqused] = popass(ass);
|
|
690
|
+
exphead.push(...ass);
|
|
691
|
+
equals.push(...ass1, o);
|
|
656
692
|
if (!question.length) equalsend = cx + 1, equcount++;
|
|
657
693
|
if (o.text.length > 1) hascalcequ = true;
|
|
658
694
|
}
|
|
659
695
|
}
|
|
660
|
-
if (!
|
|
696
|
+
if (!hasquestion) {
|
|
661
697
|
var bd = equalsend ? body.slice(equalsend) : body;
|
|
662
698
|
if (!ret && equcount === 1 && !hascalcequ && canbeOnce(bd)) {
|
|
663
|
-
|
|
699
|
+
explist = [bd];
|
|
664
700
|
}
|
|
665
701
|
else if (ret === 1 && !equcount && canbeOnce(bd)) {
|
|
666
|
-
var name =
|
|
702
|
+
var name = getnextname(0);
|
|
667
703
|
var r = [{ type: EXPRESS, text: name }, { type: STAMP, text: '=' }, ...bd]
|
|
668
704
|
r.name = name;
|
|
669
|
-
|
|
705
|
+
explist = [r];
|
|
670
706
|
}
|
|
671
707
|
else {
|
|
672
|
-
|
|
708
|
+
explist = _express(bd, getnextname, equalsend > skip || ret);
|
|
673
709
|
}
|
|
674
710
|
}
|
|
675
711
|
if (equalsend === skip) {
|
|
676
|
-
return
|
|
712
|
+
return explist;
|
|
677
713
|
}
|
|
678
|
-
|
|
679
|
-
|
|
714
|
+
relink(equals);
|
|
715
|
+
explist.unshift(...exphead);
|
|
680
716
|
var q = explist[explist.length - 1];
|
|
681
717
|
// if (!q) throw `语法错误: <red>${createString(body)}</red> \r\n行列位置: ${equals[0].row}:${equals[0].col}`
|
|
682
718
|
var n = q.name;
|
|
@@ -703,26 +739,12 @@ var ternary = function (body, getname, ret) {
|
|
|
703
739
|
}
|
|
704
740
|
else if (n) var asn = [{ type: EXPRESS, text: n }];
|
|
705
741
|
else asn = explist.pop();
|
|
706
|
-
for (var a of ass) {
|
|
707
|
-
if (a.type === SCOPED) {
|
|
708
|
-
if (a.entry === '[') {
|
|
709
|
-
var q = ternary(a, getnextname, true);
|
|
710
|
-
for (var q of q) {
|
|
711
|
-
if (q.length) pushstep(explist, q);
|
|
712
|
-
}
|
|
713
|
-
splice(a, 0, a.length, { type: EXPRESS, text: q.name });
|
|
714
|
-
}
|
|
715
|
-
else if (a.entry === '(') {
|
|
716
|
-
_invoke(a);
|
|
717
|
-
}
|
|
718
|
-
}
|
|
719
|
-
}
|
|
720
742
|
var an = '';
|
|
721
743
|
if (eq.text.length > 1) {
|
|
722
744
|
var punc = eq.text.slice(0, eq.text.length - 1);
|
|
723
745
|
var bdtmp = [...ass.map(clone), { type: STAMP, text: punc }, ...asn];
|
|
724
746
|
relink(bdtmp);
|
|
725
|
-
var explist2 = _express(bdtmp,
|
|
747
|
+
var explist2 = _express(bdtmp, getnextname, true);
|
|
726
748
|
if (isSimpleAssign) {
|
|
727
749
|
[asn, an = createString(ass)] = popexp(explist2);
|
|
728
750
|
}
|
|
@@ -737,7 +759,7 @@ var ternary = function (body, getname, ret) {
|
|
|
737
759
|
else an = n;
|
|
738
760
|
ass.push(equals[i], ...asn);
|
|
739
761
|
relink(ass);
|
|
740
|
-
if (evals.length) ass[0].set =
|
|
762
|
+
if (evals.length) ass[0].set = getnextname(0);
|
|
741
763
|
ass.name = an;
|
|
742
764
|
patchstep(ass, ass.length, 0);
|
|
743
765
|
pushstep(explist, ass);
|
|
@@ -86,7 +86,7 @@ test("await new Promise(function(){})", '_ = function () {}; _ = new Promise(_);
|
|
|
86
86
|
test(`onerror({ status: xhr.status, response: "Cookie解析异常!", toString: toResponse })`, '_ = { status: xhr.status, response: "Cookie解析异常!", toString: toResponse }; onerror(_)', true);
|
|
87
87
|
test(`if (!/^https\\:\\/\\/|^s\\/\\//.test(url)) console.warn("请使用https访问如下路径:" + url)`, '_ = /^https\\:\\/\\/|^s\\/\\//.test(url); if (_) return [1, 0]; _ = "请使用https访问如下路径:" + url; _ = console.warn(_); return [1, 0]', true);
|
|
88
88
|
test(`url += (/\\?/.test(url) ? "&" : "?") + datas;`, '_ = /\\?/.test(url); if (!_) return [1, 0]; _ = "&"; return [2, 0];\r\n _ = "?"; return [1, 0];\r\n _ = (_); _ = _ + datas; url = url + _', true);
|
|
89
|
-
test(`a = newname.querySelector("input,textarea").value = c.name.replace(/\\/$/, '')`, `_ = c.name.replace(/\\/$/, '');
|
|
89
|
+
test(`a = newname.querySelector("input,textarea").value = c.name.replace(/\\/$/, '')`, `_ = newname.querySelector("input,textarea"); _0 = c.name.replace(/\\/$/, ''); _.value = _0; a = _0`, true);
|
|
90
90
|
test(`if (selected[f.url]) f.selected = true;`, `_ = f.url; _ = selected[_]; if (!_) return [1, 0]; f.selected = true; return [1, 0]`, true);
|
|
91
91
|
test(`location.protocol + parseURL(a.b).host `, `_ = a.b; _ = parseURL(_); location.protocol + _.host`, true);
|
|
92
92
|
test(`var base = location.protocol + "//" + parseURL(this.$scope.data.host).host + "/";`, `_ = location.protocol + "//", _0 = this.$scope.data.host; _0 = parseURL(_0); _ = _ + _0.host, base = _ + "/"`, true);
|
|
@@ -98,4 +98,6 @@ test("debugger", 'debugger', true);
|
|
|
98
98
|
test("a(b,b+=1)", '_ = b; _0 = b + 1; b = _0; a(_, _0)', true);
|
|
99
99
|
test("while(a){if(b){if(c);else d;continue;}}", 'if (!a) return [4, 0]; if (!b) return [3, 0]; if (!c) return [1, 0]; return [2, 0];\r\n d; return [1, 0];\r\n return [-2, 0];\r\n return [-3, 0]', true);
|
|
100
100
|
test("/*abc*/", '/*abc*/', true);
|
|
101
|
-
test("//aaa", '//aaa', true);
|
|
101
|
+
test("//aaa", '//aaa', true);
|
|
102
|
+
test("menus[0].name+='aaa'", "_ = menus[0]; _0 = _.name + 'aaa'; _.name = _0", true);
|
|
103
|
+
test("menus[a+b].name+='aaa'", "_ = a + b; _ = menus[_]; _0 = _.name + 'aaa'; _.name = _0", true);
|