efront 4.1.12 → 4.1.14

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.
@@ -1,3 +1,6 @@
1
+ - zh-CN: 返回
2
+ en: back
3
+
1
4
  - zh-CN: 未没找到匹配的资源:$1
2
5
  en: "No matching resources found: $1"
3
6
 
@@ -52,7 +52,7 @@ class Table extends Array {
52
52
  this.update();
53
53
  }
54
54
  addItem(o) {
55
- if (isEmpty(o)) return;
55
+ if (!isHandled(o)) return;
56
56
  var searchtext = this.searchText;
57
57
  var fields = this.searchFields ? this.searchFields : this.fields;
58
58
  var power = 0;
@@ -4,12 +4,14 @@ var dump = function (a, msg) {
4
4
  else if (msg) console.log(msg + ":", a);
5
5
  else console.log(a);
6
6
  };
7
- var colorString = function (s, color) {
7
+ var colorString = function (s, color1, e, color2) {
8
8
  s = String(s);
9
- var [c0, c1] = color;
10
- if (s.indexOf(c1) === 0) s = s.slice(c1.length);
9
+ e = String(e);
10
+ var [c0, c1] = color1;
11
+ var [r0, r1] = color2;
12
+ if (s.indexOf(c1) === 0 && e.indexOf(r1) === 0) s = s.slice(c1.length);
11
13
  else s = c0 + s;
12
- if (s.lastIndexOf(c0) === s.length - c0.length) {
14
+ if (s.lastIndexOf(c0) === s.length - c0.length && e.lastIndexOf(r0) === e.length - r0.length) {
13
15
  s = s.slice(0, s.length - c0.length);
14
16
  }
15
17
  else s += c1;
@@ -29,8 +31,9 @@ var assert = function (result, expect, log = dump) {
29
31
  mark.setTag1(color1[1], color1[0]);
30
32
  mark.setTag2(color2[1], color2[0]);
31
33
  var [r, e] = mark.pair(result, expect);
32
- r = colorString(r, color1);
33
- e = colorString(e, color2);
34
+ var s = r;
35
+ r = colorString(r, color1, e, color2);
36
+ e = colorString(e, color2, s, color1);
34
37
  errors = `${color3[0]}结果 ${color3[1]}${r}\r\n ${color3[0]}应为 ${color3[1]}${e}\r\n`;
35
38
  };
36
39
  return function (error) {
@@ -0,0 +1,5 @@
1
+ function isHandled(value) {
2
+ if (value === '' || value === null || value === undefined || Number.isNaN(value)) return false;
3
+ return true;
4
+ }
5
+ module.exports = isHandled;
@@ -242,7 +242,7 @@ function parse(piece) {
242
242
  piece[0] = piece0 + (piece[0] || '').trim();
243
243
  }
244
244
 
245
- piece = piece.map(p => isString(p) ? p.trim() : p).filter(p => !isEmpty(p));
245
+ piece = piece.map(p => isString(p) ? p.trim() : p).filter(p => isHandled(p));
246
246
  if (/^[\}\]]/.test(piece[0])) {
247
247
  var f = piecepath.pop()
248
248
  last_type = f.last_type;
@@ -386,6 +386,17 @@ Javascript.prototype.setType = function (o) {
386
386
  if (o.type === STAMP) {
387
387
  if (!last || last.type & (STAMP | STRAP) || last.type === SCOPED && /^[\{\[]$/.test(last.entry) && !last.isExpress) {
388
388
  o.unary = /^[^=;,\*]$|.[^\=\>\<\|\&\^]$/.test(o.text);
389
+ if (o.unary && last && last.type === STAMP && /^(\+\+|\-\-)$/.test(last.text)) o.unary = !/^[\+\-]$/.test(o.text);
390
+ }
391
+ if (last && /^(\+\+|\-\-)$/.test(o.text)) {
392
+ var i = 1;
393
+ var p = queue[queue.length - i];
394
+ if (p === o) p = queue[queue.length - ++i];
395
+ while (p && p.type & (SPACE | COMMENT)) {
396
+ if (p.type === SPACE && /[\r\n\u2028\u2029]/.test(p.text)) break;
397
+ p = queue[queue.length - ++i];
398
+ }
399
+ o.unary = !p || p.type & (SPACE | STAMP | STRAP) || p.type === EXPRESS && p.prev && p.prev.type === STAMP && /^(\+\+|\-\-)$/.test(p.prev.text) && p.prev.unary;
389
400
  }
390
401
  }
391
402
  };
@@ -89,9 +89,15 @@ var maplist = function (u) {
89
89
  m.wcount++;
90
90
  }
91
91
  }
92
- if (enumtype & (REFSTRC | REFMOVE)) {
92
+ else if (enumtype & (REFSTRC | REFMOVE)) {
93
93
  if (o.property) o[ignore] = true;
94
- else if (o.equal) m.enumref = o.enumref, m.wcount++;
94
+ else if (o.equal) {
95
+ if (o.enumref && o.enumref !== m.enumref) {
96
+ m.enumref = o.enumref;
97
+ m.wcount++;
98
+ }
99
+ else if (enumtype & REFMOVE) m.wcount++;
100
+ }
95
101
  else if (enumtype & REFMOVE) m.wcount++;
96
102
  }
97
103
  }
@@ -122,7 +122,7 @@ var skipAssignment = function (o, cx) {
122
122
  break;
123
123
  case STRAP:
124
124
  if (needpunc) {
125
- if (!/^(in|instanceof|of|else|as)$/.test(o.text)) break loop;
125
+ if (!/^(in|instanceof|of|else|as|from)$/.test(o.text)) break loop;
126
126
  if (o.text === 'else') {
127
127
  if (!ifdeep) break loop;
128
128
  ifdeep--;
@@ -227,6 +227,10 @@ function snapSentenceHead(o) {
227
227
  o = p;
228
228
  continue;
229
229
  }
230
+ if (o.type === STRAP && /^(in|instanceof|of|as|from)$/.test(o.text)) {
231
+ o = p;
232
+ continue;
233
+ }
230
234
  break;
231
235
  }
232
236
  if (p.type & (VALUE | QUOTED)) {
@@ -257,10 +261,24 @@ function snapSentenceHead(o) {
257
261
  o = p;
258
262
  continue;
259
263
  }
260
- if (/^(in|instanceof)$/.test(p.text)) {
264
+ if (/^(in|instanceof|of|as|from)$/.test(p.text)) {
261
265
  o = p.prev;
262
266
  continue;
263
267
  }
268
+ if (/^(return|yield|break|continue)$/.test(p.text)) {
269
+ if (p.isend) break;
270
+ o = p;
271
+ if (p.text === 'yield') continue;
272
+ break;
273
+ }
274
+ if (/^import$/.test(p.text)) {
275
+ if (o.type === SCOPED && o.entry === '(') {
276
+ o = p;
277
+ continue;
278
+ }
279
+ o = p;
280
+ break;
281
+ }
264
282
  break;
265
283
  }
266
284
  if (p.type === STAMP) {
@@ -274,9 +292,21 @@ function snapSentenceHead(o) {
274
292
  }
275
293
  }
276
294
  if (/^(?:[!~]|\+\+|\-\-)$/.test(p.text)) {
295
+ if (!p.unary) {
296
+ if (o.type === STAMP && !o.unary || o.type === STRAP && /^(in|instanceof|of|as|from)$/.test(o.text)) {
297
+ o = p;
298
+ continue;
299
+ }
300
+ break;
301
+ }
277
302
  o = p;
278
303
  continue;
279
304
  }
305
+ var pp = p.prev;
306
+ if (pp.type === STAMP && /^(\+\+|\-\-)$/.test(pp.text) && pp.prev) {
307
+ o = pp.prev;
308
+ continue;
309
+ }
280
310
  o = p.prev;
281
311
  continue;
282
312
  }
@@ -966,7 +996,7 @@ var hasBreakBetween = function (prev, next) {
966
996
  };
967
997
  var getSemicolonBetween = function (prev, next) {
968
998
  if (next.type === PROPERTY) return ";";
969
- if (next.type === STAMP && next.text === "*") return ";";
999
+ if (next.type === STAMP && next.text === "*" && next.next && next.next.type === PROPERTY) return ";";
970
1000
  if (
971
1001
  (EXPRESS | VALUE | QUOTED) & prev.type
972
1002
  || prev.type === STAMP && /^(\+\+|\-\-)$/.test(prev.text)
@@ -1129,11 +1159,13 @@ var createString = function (parsed) {
1129
1159
  if (autospace) if (!prev.unary || /[\+\-]$/.test(prev.text) && prev.text === o.text) result.push(" ");
1130
1160
  }
1131
1161
  else if (/^(\+\+|\-\-)$/.test(o.prev.text) && o.prev.prev) {
1132
- var prev_prev = o.prev.prev;
1133
- if (
1134
- prev_prev.type === STRAP && !prev_prev.isExpress
1135
- || prev_prev.type & (EXPRESS | VALUE)
1136
- ) result.push(";");
1162
+ if (o.unary) {
1163
+ var prev_prev = o.prev.prev;
1164
+ if (
1165
+ prev_prev.type === STRAP && !prev_prev.isExpress
1166
+ || prev_prev.type & (EXPRESS | VALUE)
1167
+ ) result.push(";");
1168
+ }
1137
1169
  }
1138
1170
 
1139
1171
  else if (o.text === '*') {
@@ -1,5 +1,7 @@
1
1
  function testPickSentence(text, index, except) {
2
- var code = scanner2(text);
2
+ var js = new Javascript;
3
+ js.defaultType = common.STRAP;
4
+ var code = scanner2(text, js);
3
5
  assert(common.createString(common.pickSentence(code[index])), except);
4
6
  }
5
7
  testPickSentence(`function 九尾妖狐(){}`, 0, "function 九尾妖狐() {}")
@@ -10,3 +12,25 @@ testPickSentence(`a: function 九尾妖狐(){}`, 2, "a: function 九尾妖狐()
10
12
  testPickSentence(`a: 王天霸, 步惊云 b:叶流云, 四顾剑`, 2, "a: 王天霸, 步惊云")
11
13
  testPickSentence(`a: 王天霸, 步惊云 b:叶流云, 四顾剑`, 4, "b: 叶流云, 四顾剑")
12
14
  testPickSentence(`a: 王天霸, 步惊云; b:叶流云, 四顾剑`, 4, "a: 王天霸, 步惊云")
15
+ testPickSentence(`return a`, 1, "return a")
16
+ testPickSentence(`a=yield 1`, 3, "a = yield 1")
17
+ testPickSentence(`return a=yield 1`, 3, "return a = yield 1")
18
+ testPickSentence(`if(a)return a=yield 1`, 6, "return a = yield 1")
19
+ testPickSentence(`if(a)return\r\na=yield 1`, 6, "a = yield 1")
20
+ testPickSentence(`if(a)return\r\na=yield 1`, 3, "return\r\n")
21
+ testPickSentence(`if(a)import(a)`, 3, "import(a)")
22
+ testPickSentence(`import(b)import(a)`, 3, "import(a)")
23
+ testPickSentence(`1+import(a)`, 3, "1 + import(a)")
24
+ testPickSentence(`1+await import(a)`, 3, "1 + await import(a)")
25
+ testPickSentence(`a as b`, 2, "a as b")
26
+ testPickSentence(`a of b`, 2, "a of b")
27
+ testPickSentence(`a in b`, 2, "a in b")
28
+ testPickSentence(`a instanceof b`, 2, "a instanceof b")
29
+ testPickSentence(`import a from b`, 3, "import a from b")
30
+ testPickSentence(`1+2+3`, 3, "1 + 2 + 3")
31
+ testPickSentence(`1+2+3`, 2, "1 + 2 + 3")
32
+ testPickSentence(`a+b+ ++c`, 5, "a + b + ++c")
33
+ testPickSentence(`a+b\r\n++c`, 5, "++c")
34
+ testPickSentence(`a+b++\r\nc`, 5, "c")
35
+ testPickSentence(`a+b++\r\nc`, 5, "c")
36
+ testPickSentence(`a+b++\r\n+c`, 6, "a + b++\r\n+ c")
@@ -11,7 +11,7 @@ var helps = [
11
11
  ["m", i18n`创建应用,项目目录允许创建第二个应用`, "init", "from SRCNAME", "init APPNAME", "init APPNAME from SRCNAME", "from SRCNAME init APPNAME"],
12
12
  ["m", i18n`创建简单应用,独占项目目录的单应用`, "create", "simple", "create|simple from SRCNAME", "create|simple APPNAME", "create|simple APPNAME from APPNAME"],
13
13
  ["m", i18n`创建空应用`, "blank", "simple", "from blank", "simple from blank"],
14
- ["q", i18n`自动识别环境并启动测试环境服务器`, "cook", "cooks", "cook HTTP_PORT", "cook HTTP_PORT HTTPS_PORT", "cooks HTTPS_PORT", "cooks HTTPS_PORT HTTP_PORT"],
14
+ ["a", i18n`自动识别环境并启动测试环境服务器`, "cook", "cooks", "cook HTTP_PORT", "cook HTTP_PORT HTTPS_PORT", "cooks HTTPS_PORT", "cooks HTTPS_PORT HTTP_PORT"],
15
15
  ["q", i18n`自动识别环境并启动开发环境服务器`, "live", "lives", "live HTTP_PORT", "live HTTP_PORT HTTPS_PORT", "lives HTTPS_PORT", "lives HTTPS_PORT HTTP_PORT"],
16
16
  ["a", i18n`在项目文件夹启动生产环境服务器`, "start", "starts", "start HTTP_PORT", "start HTTP_PORT HTTPS_PORT", "starts HTTPS_PORT", "starts HTTPS_PORT HTTP_PORT"],
17
17
  ["a", i18n`在项目文件夹启动开发环境服务器`, "dev", "devs", "test", "dev|test HTTP_PORT", "dev|test HTTP_PORT HTTPS_PORT", "devs|tests HTTPS_PORT", "devs|tests HTTPS_PORT HTTP_PORT"],
@@ -1,10 +1,11 @@
1
1
  <back onclick="history.back()">
2
- <i></i><span>返回</span>
2
+ <i></i><span>${i18n`返回`}</span>
3
3
  </back>
4
4
  <style>
5
5
  i:before {
6
6
  content: "‹";
7
- font-size: 28px;
7
+ font-size: 26px;
8
+ font-family: Arial, Helvetica, sans-serif;
8
9
  }
9
10
 
10
11
  i {
@@ -13,6 +14,7 @@
13
14
  }
14
15
 
15
16
  span {
17
+ text-transform: capitalize;
16
18
  font-size: 14px;
17
19
  margin-left: 10px;
18
20
  margin-top: -10px;
@@ -469,18 +469,19 @@ var src2 = function (search) {
469
469
  temp = extend([], origin);
470
470
  } else if (isObject(origin)) {
471
471
  temp = extend({}, origin);
472
- } else if (isEmpty(origin)) {
472
+ } else if (!isHandled(origin)) {
473
473
  temp = "";
474
474
  }
475
- if (savedValue !== undefined && savedValue !== null) {
475
+ if (isHandled(savedValue)) {
476
476
  var changes = getChanges(temp, savedValue);
477
- if (!changes || isEmpty(origin) && isEmpty(this.src) && isEmpty(savedValue)) return;
477
+ if (!changes) return;
478
478
  }
479
479
  else {
480
480
  if (isSame(savedValue, temp)) return;
481
481
  }
482
482
  savedValue = temp;
483
- this.src = origin;
483
+ if (!isHandled(origin) && !isHandled(this.src));
484
+ else this.src = origin;
484
485
  cast(this, origin);
485
486
  });
486
487
  }
@@ -748,7 +749,7 @@ function renderElement(element, scope = element.$scope, parentScopes = element.$
748
749
  if (!isNumber(element.$renderid)) {
749
750
  element.$renderid = 0;
750
751
  element.$scope = scope;
751
- if (!isEmpty(parentScopes) && !isArray(parentScopes)) {
752
+ if (isHandled(parentScopes) && !isArray(parentScopes)) {
752
753
  throw new Error('父级作用域链应以数组的类型传入');
753
754
  }
754
755
  if (parentScopes) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "efront",
3
- "version": "4.1.12",
3
+ "version": "4.1.14",
4
4
  "description": "简化前端开发,优化web性能",
5
5
  "main": "public/efront.js",
6
6
  "directories": {