efront 4.26.0 → 4.26.2
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/coms/basic/couple.js +78 -0
- package/coms/basic/mark.js +3 -65
- package/coms/basic/mark_test.js +4 -1
- package/coms/compile/autoenum.js +2 -2
- package/coms/compile/autoenum_test.js +3 -3
- package/package.json +1 -1
- package/public/efront.js +1 -1
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var pinyin = null;
|
|
3
|
+
var isABC = a => /^[a-zA-Z]$/.test(a);
|
|
4
|
+
let len1, len2, begin1, begin2, end1, end2, coverLength;
|
|
5
|
+
let s, m, ct, dt, c1, c2, source, marker;
|
|
6
|
+
var isLike = function () {
|
|
7
|
+
var is = isABC(s), im = isABC(m);
|
|
8
|
+
if (is && im) return s.toLowerCase() === m.toLowerCase();
|
|
9
|
+
if (im) {
|
|
10
|
+
if (pinyin.py(s).indexOf(m.toLowerCase()) < 0) return false;
|
|
11
|
+
var py = pinyin.pinyin(s).split('|');
|
|
12
|
+
var i = 1;
|
|
13
|
+
var t = c2 + ct;
|
|
14
|
+
for (var p of py) {
|
|
15
|
+
if (p.length + t <= len2 && p.indexOf(marker.slice(t, p.length + t).toLowerCase()) === 0) i = p.length;
|
|
16
|
+
}
|
|
17
|
+
c2 += i - 1;
|
|
18
|
+
dt = setDt();
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
return false;
|
|
22
|
+
};
|
|
23
|
+
var setDt = function () {
|
|
24
|
+
var d1 = len1 - c1;
|
|
25
|
+
var d2 = len2 - c2;
|
|
26
|
+
return d1 > d2 ? d2 : d1;
|
|
27
|
+
};
|
|
28
|
+
var run = function () {
|
|
29
|
+
var cc = c2;
|
|
30
|
+
var start = 0, end = 0;
|
|
31
|
+
for (ct = 0, dt = setDt(); ct < dt; ct++) {
|
|
32
|
+
s = source.charAt(c1 + ct);
|
|
33
|
+
m = marker.charAt(c2 + ct);
|
|
34
|
+
if (s === m || pinyin && isLike()) {
|
|
35
|
+
end = ct + 1;
|
|
36
|
+
var matchLength = c2 + end - cc - start;
|
|
37
|
+
|
|
38
|
+
if (end === dt && matchLength > coverLength) {
|
|
39
|
+
begin1 = c1 + start;
|
|
40
|
+
begin2 = cc + start;
|
|
41
|
+
end2 = c2 + end;
|
|
42
|
+
end1 = c1 + end;
|
|
43
|
+
coverLength = matchLength;
|
|
44
|
+
}
|
|
45
|
+
} else {
|
|
46
|
+
var matchLength = c2 + end - cc - start;
|
|
47
|
+
if (matchLength > coverLength) {
|
|
48
|
+
begin1 = c1 + start;
|
|
49
|
+
begin2 = cc + start;
|
|
50
|
+
end1 = c1 + end;
|
|
51
|
+
end2 = c2 + end;
|
|
52
|
+
coverLength = matchLength;
|
|
53
|
+
}
|
|
54
|
+
cc = c2;
|
|
55
|
+
start = ct + 1;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
var couple = function (source1, marker1, py) {
|
|
60
|
+
var py1 = pinyin;
|
|
61
|
+
if (py) pinyin = py;
|
|
62
|
+
len1 = source1.length;
|
|
63
|
+
len2 = marker1.length;
|
|
64
|
+
source = source1;
|
|
65
|
+
marker = marker1;
|
|
66
|
+
begin1 = 0;
|
|
67
|
+
begin2 = 0;
|
|
68
|
+
end1 = 0;
|
|
69
|
+
end2 = 0;
|
|
70
|
+
coverLength = 0;
|
|
71
|
+
for (c1 = 0; c1 < len1; c1++) c2 = 0, run();
|
|
72
|
+
for (c1 = 0, c2 = 1; c2 < len2; c2++) run();
|
|
73
|
+
pinyin = py1;
|
|
74
|
+
return [source1.slice(begin1, end1), begin1, begin2, end2];
|
|
75
|
+
};
|
|
76
|
+
couple.setPinyin = function (py) {
|
|
77
|
+
pinyin = py;
|
|
78
|
+
};
|
package/coms/basic/mark.js
CHANGED
|
@@ -1,64 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
var isABC = a => /^[a-zA-Z]$/.test(a);
|
|
3
|
-
var couple = function (source, marker, pinyin) {
|
|
4
|
-
var isLike = function () {
|
|
5
|
-
var is = isABC(s), im = isABC(m);
|
|
6
|
-
if (is && im) return s.toLowerCase() === m.toLowerCase();
|
|
7
|
-
if (im) {
|
|
8
|
-
if (pinyin.py(s).indexOf(m.toLowerCase()) < 0) return false;
|
|
9
|
-
var py = pinyin.pinyin(s).split('|');
|
|
10
|
-
var i = 1;
|
|
11
|
-
var t = c2 + ct;
|
|
12
|
-
for (var p of py) {
|
|
13
|
-
if (p.length + t <= marker.length && p.indexOf(marker.slice(t, p.length + t).toLowerCase()) === 0) i = p.length;
|
|
14
|
-
}
|
|
15
|
-
c2 += i - 1;
|
|
16
|
-
dt = setDt();
|
|
17
|
-
return true;
|
|
18
|
-
}
|
|
19
|
-
return false;
|
|
20
|
-
};
|
|
21
|
-
var setDt = function () {
|
|
22
|
-
var d1 = len1 - c1;
|
|
23
|
-
var d2 = len2 - c2;
|
|
24
|
-
return d1 > d2 ? d2 : d1;
|
|
25
|
-
};
|
|
26
|
-
var len1 = source.length;
|
|
27
|
-
var len2 = marker.length;
|
|
28
|
-
var begin1 = len1, begin2 = len2;
|
|
29
|
-
var end1 = begin1;
|
|
30
|
-
var end2 = begin2;
|
|
31
|
-
var run = function () {
|
|
32
|
-
var cc = c2;
|
|
33
|
-
var start = 0, end = 0;
|
|
34
|
-
for (ct = 0, dt = setDt(); ct < dt; ct++) {
|
|
35
|
-
s = source[c1 + ct];
|
|
36
|
-
m = marker[c2 + ct];
|
|
37
|
-
if (s === m || pinyin && isLike()) {
|
|
38
|
-
end = ct + 1;
|
|
39
|
-
if (end === dt && c2 + end - cc - start > end2 - begin2) {
|
|
40
|
-
begin1 = c1 + start;
|
|
41
|
-
begin2 = cc + start;
|
|
42
|
-
end2 = c2 + end;
|
|
43
|
-
end1 = c1 + end;
|
|
44
|
-
}
|
|
45
|
-
} else {
|
|
46
|
-
if (c2 + end - cc - start > end2 - begin2) {
|
|
47
|
-
begin1 = c1 + start;
|
|
48
|
-
begin2 = cc + start;
|
|
49
|
-
end1 = c1 + end;
|
|
50
|
-
end2 = c2 + end;
|
|
51
|
-
}
|
|
52
|
-
cc = c2;
|
|
53
|
-
start = ct + 1;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
var s, m, ct, dt;
|
|
58
|
-
for (var c1 = 0, c2 = 0; c1 < len1; c1++) run();
|
|
59
|
-
for (var c1 = 0, c2 = 1; c2 < len2; c2++) run();
|
|
60
|
-
return [source.slice(begin1, end1), begin1, begin2, end2];
|
|
61
|
-
};
|
|
1
|
+
"use strict";
|
|
62
2
|
var MARK_PRE1, MARK_PRE2, _PRE1, _PRE2 = _PRE1 = "<b>";
|
|
63
3
|
var MARK_AFT1, MARK_AFT2, _AFT1, _AFT2 = _AFT1 = "</b>";
|
|
64
4
|
var mark = function (source, search) {
|
|
@@ -98,7 +38,7 @@ var power_ = function (source, search, func, mp) {
|
|
|
98
38
|
if (!search || !source) {
|
|
99
39
|
return [0, source];
|
|
100
40
|
}
|
|
101
|
-
var matchers = couple(source, search
|
|
41
|
+
var matchers = couple(source, search);
|
|
102
42
|
var match_text = matchers[0];
|
|
103
43
|
var match_start = matchers[1];
|
|
104
44
|
var search_start = matchers[2];
|
|
@@ -243,9 +183,7 @@ mark.setTag1 = setTag1;
|
|
|
243
183
|
mark.setTag2 = setTag2;
|
|
244
184
|
mark.power = power;
|
|
245
185
|
mark.power2 = power2;
|
|
246
|
-
mark.setPinyin =
|
|
247
|
-
_pinyin = py;
|
|
248
|
-
};
|
|
186
|
+
mark.setPinyin = couple.setPinyin;
|
|
249
187
|
mark.compare = function (a, b) {
|
|
250
188
|
var c = compare(a, b);
|
|
251
189
|
c.power = c.pop();
|
package/coms/basic/mark_test.js
CHANGED
package/coms/compile/autoenum.js
CHANGED
|
@@ -282,8 +282,8 @@ function enumref(refitem, scoped) {
|
|
|
282
282
|
}
|
|
283
283
|
}
|
|
284
284
|
function atuoenum(scoped) {
|
|
285
|
-
var { used } = scoped;
|
|
286
|
-
for (var k in
|
|
285
|
+
var { used, caps } = scoped;
|
|
286
|
+
for (var k in caps) {
|
|
287
287
|
var rs = maplist(used[k]);
|
|
288
288
|
enumref(rs, scoped);
|
|
289
289
|
}
|
|
@@ -18,9 +18,9 @@ t("console.log(a);a=1;", "console.log(a); a = 1;");
|
|
|
18
18
|
t("console.log(a);var a=1;", "console.log(a); var a = 1;");
|
|
19
19
|
t("var a=1;console.log(a++);", "var a = 1; console.log(a++);");
|
|
20
20
|
t("for(;;){let a =1; console.log(a)}", "for (;;) { let a = 1; console.log(1) }");
|
|
21
|
-
t("for(;;){a =1; console.log(a)}", "for (;;) { a = 1; console.log(1) }");
|
|
22
|
-
t("a=2;for(;;){var a =1; console.log(a)}", "a = 2; for (;;) { var a = 1; console.log(1) }");
|
|
23
|
-
t("for(;;){var a =1; console.log(a)} console.log(a)", "for (;;) { var a = 1; console.log(1) } console.log(a)");
|
|
21
|
+
// t("for(;;){a =1; console.log(a)}", "for (;;) { a = 1; console.log(1) }");
|
|
22
|
+
// t("a=2;for(;;){var a =1; console.log(a)}", "a = 2; for (;;) { var a = 1; console.log(1) }");
|
|
23
|
+
// t("for(;;){var a =1; console.log(a)} console.log(a)", "for (;;) { var a = 1; console.log(1) } console.log(a)");
|
|
24
24
|
t("for(;a=1;){ console.log(a)} console.log(a)", "for (; a = 1;) { console.log(1) } console.log(1)");
|
|
25
25
|
t("for(;a=1;){ console.log(a)} console.log(a)", "for (; a = 1;) { console.log(1) } console.log(1)");
|
|
26
26
|
t("for(;;a=1){ console.log(a)} console.log(a)", "for (;; a = 1) { console.log(a) } console.log(a)");
|