efront 4.3.8 → 4.3.10

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: sexagesimal
3
+
1
4
  - zh-CN: 翻译工具
2
5
  en: translation tool
3
6
 
@@ -448,7 +448,7 @@ class Program {
448
448
  if (isdigit && lasttype === STAMP) {
449
449
  var last = queue.last;
450
450
  var prev = last.prev;
451
- if ((!prev || prev.type & (STAMP | STRAP)) && /^[+\-]+$/.test(last.text)) {
451
+ if ((!prev || prev.type & (STAMP | STRAP) && !/^(\+\+|\-\-)$/.test(prev.text)) && /^[+\-]+$/.test(last.text)) {
452
452
  last.type = VALUE;
453
453
  last.text += m;
454
454
  lasttype = VALUE;
@@ -55,6 +55,7 @@ var skipAssignment = function (o, cx) {
55
55
  break;
56
56
  case "++":
57
57
  case "--":
58
+ if (needpunc && o.unary) break loop;
58
59
  next();
59
60
  break;
60
61
  case "!":
@@ -1,4 +1,4 @@
1
- var { SPACE, COMMENT, EXPRESS, STRAP, QUOTED, STAMP, SCOPED, VALUE, LABEL, canbeTemp: _canbeTemp, isEval, createString, skipAssignment, skipSentenceQueue, isHalfSentence, splice, relink, createExpressList, snapExpressHead, snapExpressFoot } = require("./common");
1
+ var { SPACE, COMMENT, EXPRESS, STRAP, QUOTED, STAMP, SCOPED, VALUE, LABEL, canbeTemp: _canbeTemp, isEval, createString, skipAssignment, pickSentence, skipSentenceQueue, isHalfSentence, splice, relink, createExpressList, snapExpressHead, snapExpressFoot } = require("./common");
2
2
  var scanner2 = require("./scanner2");
3
3
  var returnText = function () { return this.text };
4
4
  var NodeNotClone = o => Object.assign(Object.create(null), o, { toString: returnText });
@@ -54,7 +54,7 @@ var mount_break = function (body, cx, b1s, iscontinue) {
54
54
  }
55
55
  var _break = function (body, cx, result, iscontinue) {
56
56
  var re = result[result.length - 1];
57
- if (!result.length || re.ret_ && !re.await_ && re.ret_ !== -2) return;
57
+ if (!result.length || result.length === 1 && re.ret_ && !re.await_ && re.ret_ !== -2) return;
58
58
  var _b = scanner2('return []');
59
59
  _b.ret_ = -1;
60
60
  mount_break(body, cx, [_b[1]], iscontinue);
@@ -144,6 +144,7 @@ var _withset = function (text, tmpname, valname) {
144
144
  };
145
145
  var _switch = function (body, cx, unblock, result, getname) {
146
146
  var o = body[cx];
147
+ var O = o;
147
148
  o = o.next;
148
149
  if (!o) return;
149
150
  var qt = ternary(o, getname, true);
@@ -492,7 +493,11 @@ var remove_end_comma = function (o) {
492
493
  };
493
494
  var ispropcall = function (o) {
494
495
  var n = o.next;
495
- if (!n || n.type !== SCOPED || n.entry !== '(') return false;
496
+ if (!n) return false;
497
+ if (n.type === STAMP) {
498
+ if (!/^(\+\+|\-\-|[^!=><]+\=|>>>?=|<<=)$/.test(n.text)) return false;
499
+ }
500
+ else if (n.type !== SCOPED || n.entry !== '(') return false;
496
501
  if (o.type === EXPRESS && snapExpressHead(o) !== o) return true;
497
502
  if (o.type === SCOPED && o.entry === '[' && snapExpressHead(o) !== o) return true;
498
503
  return false;
@@ -961,10 +966,10 @@ var _express = function (body, getname, ret) {
961
966
  }
962
967
  if (o.type & (STRAP | STAMP)) {
963
968
  var p = 0;
964
- if (/[!~]|\+\-|\-\+/.test(o.text)) p = powermap["!"];
965
- if (!p && /[\+\-]/.test(o.text)) p = needpunc ? powermap["+"] : powermap["!"];
969
+ if (/^([!~]|\+\-|\-\+)*$/.test(o.text)) p = powermap["!"];
970
+ if (!p && /^[\+\-]$/.test(o.text)) p = needpunc ? powermap["+"] : powermap["!"];
966
971
  if (!p) p = powermap[o.text];
967
- needpunc = false;
972
+ if (o.unary) needpunc = false;
968
973
  var b = body.slice(bx, cx + 1);
969
974
  bx = cx + 1;
970
975
  b.index = nameindex;
@@ -133,6 +133,18 @@ test("predef[key[1]][key[2]][key[3]]", '_ = key[1]; _ = predef[_]; _0 = key[2];
133
133
  test("[key[1]][key[2]][key[3]]", '_ = key[1]; _ = [_]; _0 = key[2]; _ = _[_0]; _0 = key[3]; _[_0]');
134
134
  test("[key[1]][key[2]]+[key[3]][key[4]]", '_ = key[1]; _ = [_]; _0 = key[2]; _ = _[_0]; _0 = key[3]; _0 = [_0]; _1 = key[4]; _ + _0[_1]');
135
135
  test("if(a)a:{break a}", "if (!a) return [2, 0]; return [1, 0];\r\n return [1, 0]", true);
136
- unstruct.debug = true;
137
136
  test("rgb=(rgb<<8|rgb>>16)&0xffffff", "_ = rgb << 8, _0 = rgb >> 16, _ = _ | _0; _ = (_); rgb = _ & 0xffffff", true);
138
- test(`if (c) a; else return true; return false`, "if (!c) return [1, 0]; a; return [2, 0];\r\n return [true, 2];\r\n return [false, 2]")
137
+ test(`if (c) a; else return true; return false`, "if (!c) return [1, 0]; a; return [2, 0];\r\n return [true, 2];\r\n return [false, 2]")
138
+ test(`switch(a){case a:a=a?1:0;break;case b:a=b;break;}`, "if (a === a) return [1, 0]; if (a === b) return [4, 0]; return [5, 0];\r\n if (!a) return [1, 0]; a = 1; return [2, 0];\r\n a = 0; return [1, 0];\r\n return [2, 0];\r\n a = b; return [1, 0]");
139
+ test(`a=typeof a!==1`, "_ = typeof a, a = _ !== 1");
140
+ test(`a[0]++`, "a[0]++");
141
+ test(`1+a[0]++`, "_ = a[0]++, 1 + _");
142
+ test(`a[0]++ + 1`, "_ = a[0]++, _ + 1");
143
+ test(`a[0]-- + 1`, "_ = a[0]--, _ + 1");
144
+ test(`a[0]-- +1`, "_ = a[0]--, _ + 1");
145
+ test(`a[0]--+1`, "_ = a[0]--, _ + 1");
146
+ test(`a[0]+++1`, "_ = a[0]++, _ + 1");
147
+ unstruct.debug = true; r++;
148
+ test(`c=b\r\n++a`, "c = b; ++a");
149
+ test(`c=b+\r\n++a`, "_ =\r\n++a, c = b + _");
150
+ test(`c=b+ ++a`, "_ = ++a, c = b + _");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "efront",
3
- "version": "4.3.8",
3
+ "version": "4.3.10",
4
4
  "description": "简化前端开发,优化web性能",
5
5
  "main": "public/efront.js",
6
6
  "directories": {