efront 4.25.0 → 4.25.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/i18n.js +3 -2
- package/coms/compile/common.js +26 -19
- package/coms/compile/downLevel.js +18 -10
- package/coms/compile/downLevel_test.js +12 -8
- package/coms/compile/powermap.js +5 -0
- package/coms/compile/translate.js +2 -1
- package/coms/frame/route.js +2 -1
- package/coms//350/214/250/350/217/260//346/240/207/347/255/276/345/214/226.js +5 -2
- package/package.json +1 -1
- package/public/efront.js +1 -1
package/coms/basic/i18n.js
CHANGED
|
@@ -38,7 +38,7 @@ i18n.getIndex = function () {
|
|
|
38
38
|
};
|
|
39
39
|
i18n.setIndex = function (index) {
|
|
40
40
|
languageIndex = +index;
|
|
41
|
-
localStorage.setItem('language-index', index);
|
|
41
|
+
if (localStorage) localStorage.setItem('language-index', index);
|
|
42
42
|
supports = [];
|
|
43
43
|
i18n.supports = supports;
|
|
44
44
|
i18n.reload();
|
|
@@ -62,7 +62,8 @@ i18n.removeReloader = function () {
|
|
|
62
62
|
}
|
|
63
63
|
};
|
|
64
64
|
if (this.navigator) i18n.setLanguage(this.navigator.language);
|
|
65
|
-
var
|
|
65
|
+
var { localStorage } = this;
|
|
66
|
+
var i = +localStorage?.getItem('language-index');
|
|
66
67
|
if (i >= 0) i18n.setIndex(i);
|
|
67
68
|
else i18n.setIndex(languageIndex);
|
|
68
69
|
var supports;
|
package/coms/compile/common.js
CHANGED
|
@@ -551,7 +551,7 @@ var createScoped = function (parsed, wash) {
|
|
|
551
551
|
var isCatch = false;
|
|
552
552
|
var isFunction = false;
|
|
553
553
|
var isScope = false;
|
|
554
|
-
var
|
|
554
|
+
var isArraw = false;
|
|
555
555
|
var isClass = false;
|
|
556
556
|
var isAsync = false;
|
|
557
557
|
var isAster = false;
|
|
@@ -616,7 +616,7 @@ var createScoped = function (parsed, wash) {
|
|
|
616
616
|
}
|
|
617
617
|
if (o.next && o.next.type === STAMP && o.next.text === "=>") {
|
|
618
618
|
isScope = true;
|
|
619
|
-
|
|
619
|
+
isArraw = true;
|
|
620
620
|
isAsync = o.prev?.type === STRAP && o.prev.text === 'async';
|
|
621
621
|
}
|
|
622
622
|
else {
|
|
@@ -739,7 +739,7 @@ var createScoped = function (parsed, wash) {
|
|
|
739
739
|
if (o.entry === "(") {
|
|
740
740
|
var prev = o.prev;
|
|
741
741
|
if (o.next && o.next.type === STAMP && o.next.text === "=>") {
|
|
742
|
-
|
|
742
|
+
isArraw = true;
|
|
743
743
|
isScope = true;
|
|
744
744
|
if (prev?.type === STRAP && prev.text === 'async') {
|
|
745
745
|
isAsync = true;
|
|
@@ -783,7 +783,7 @@ var createScoped = function (parsed, wash) {
|
|
|
783
783
|
scoped = [];
|
|
784
784
|
var isExpress = o.isExpress;
|
|
785
785
|
|
|
786
|
-
if (isFunction ||
|
|
786
|
+
if (isFunction || isArraw) {
|
|
787
787
|
scoped.used = used;
|
|
788
788
|
scoped.vars = vars;
|
|
789
789
|
lets = vars;
|
|
@@ -809,7 +809,7 @@ var createScoped = function (parsed, wash) {
|
|
|
809
809
|
thisscope = scoped;
|
|
810
810
|
}
|
|
811
811
|
}
|
|
812
|
-
if (
|
|
812
|
+
if (isArraw);
|
|
813
813
|
else while (o && (o.type !== SCOPED || o.entry === '[')) {
|
|
814
814
|
o = o.next;
|
|
815
815
|
if (o && o.type === EXPRESS) {
|
|
@@ -850,7 +850,7 @@ var createScoped = function (parsed, wash) {
|
|
|
850
850
|
if (!o);
|
|
851
851
|
else if (o.type === STAMP && o.text === "=>") o = o.next;
|
|
852
852
|
}
|
|
853
|
-
else if (
|
|
853
|
+
else if (isArraw) {
|
|
854
854
|
vars[o.text] = true;
|
|
855
855
|
o.kind = 'argument';
|
|
856
856
|
saveTo(used, o.text, o);
|
|
@@ -862,7 +862,7 @@ var createScoped = function (parsed, wash) {
|
|
|
862
862
|
o.scoped = scoped;
|
|
863
863
|
o.isExpress = isExpress;
|
|
864
864
|
run(o.first);
|
|
865
|
-
if (
|
|
865
|
+
if (isArraw && id >= 0 && o) o = o.next;
|
|
866
866
|
if (wash && isFunction) {
|
|
867
867
|
var e = o.next;
|
|
868
868
|
if (e && e.type === EXPRESS && /^[\.\[]/.test(e.text) || e && e.type === SCOPED && e.entry === "[") {
|
|
@@ -877,7 +877,7 @@ var createScoped = function (parsed, wash) {
|
|
|
877
877
|
}
|
|
878
878
|
}
|
|
879
879
|
}
|
|
880
|
-
else if (
|
|
880
|
+
else if (isArraw) {
|
|
881
881
|
var next = skipAssignment(o);
|
|
882
882
|
scoped.arraw = o;
|
|
883
883
|
var u = o;
|
|
@@ -907,7 +907,7 @@ var createScoped = function (parsed, wash) {
|
|
|
907
907
|
} while (o);
|
|
908
908
|
}
|
|
909
909
|
var map = isFunction ? vars : lets;
|
|
910
|
-
var keepscope = !!scoped.body || !!scoped.head
|
|
910
|
+
var keepscope = !!scoped.body || !!scoped.head;
|
|
911
911
|
if (!keepscope) for (var k in map) {
|
|
912
912
|
keepscope = true;
|
|
913
913
|
break;
|
|
@@ -934,8 +934,8 @@ var createScoped = function (parsed, wash) {
|
|
|
934
934
|
mergeTo(_used, used);
|
|
935
935
|
if (scoped.length) _scoped.push(scoped);
|
|
936
936
|
}
|
|
937
|
-
if (
|
|
938
|
-
scoped.
|
|
937
|
+
if (isArraw) {
|
|
938
|
+
scoped.isArraw = true;
|
|
939
939
|
if (!thisscope.insett && used.this) thisscope.insett = true;
|
|
940
940
|
if (!argscope.inseta && used.arguments) argscope.inseta = true;
|
|
941
941
|
}
|
|
@@ -943,7 +943,7 @@ var createScoped = function (parsed, wash) {
|
|
|
943
943
|
if (isFunction) {
|
|
944
944
|
funcbody = _funcbody;
|
|
945
945
|
labelused = _labelused;
|
|
946
|
-
if (!
|
|
946
|
+
if (!isArraw) {
|
|
947
947
|
delete vars.this;
|
|
948
948
|
delete vars.arguments;
|
|
949
949
|
thisscope = _thisscope;
|
|
@@ -1260,21 +1260,27 @@ var needBreakBetween = function (prev, next) {
|
|
|
1260
1260
|
if (hasBreakBetween(prev, next)) return;
|
|
1261
1261
|
return getSemicolonBetween(prev, next) === ';' ? ';' : '';
|
|
1262
1262
|
};
|
|
1263
|
-
var
|
|
1264
|
-
|
|
1265
|
-
|
|
1263
|
+
var rolink = function (list) {
|
|
1264
|
+
return link(list, list[0]?.prev, list[list.length - 1]?.next);
|
|
1265
|
+
};
|
|
1266
|
+
var link = function (list, p, n) {
|
|
1267
|
+
var pi = 0, f = null;
|
|
1268
|
+
list.first = null;
|
|
1266
1269
|
for (var cx = 0, dx = list.length; cx < dx; cx++) {
|
|
1267
1270
|
var o = list[cx];
|
|
1268
1271
|
o.prev = p;
|
|
1269
1272
|
if (o.type & (COMMENT | SPACE)) continue;
|
|
1270
|
-
if (!
|
|
1273
|
+
if (!f) list.first = o;
|
|
1271
1274
|
while (pi < cx) list[pi++].next = o;
|
|
1272
|
-
p = o;
|
|
1275
|
+
f = p = o;
|
|
1273
1276
|
}
|
|
1274
|
-
while (pi < cx) list[pi++].next =
|
|
1275
|
-
list.last =
|
|
1277
|
+
while (pi < cx) list[pi++].next = n;
|
|
1278
|
+
list.last = f;
|
|
1276
1279
|
return list;
|
|
1277
1280
|
};
|
|
1281
|
+
var relink = function (list) {
|
|
1282
|
+
return link(list, null, null);
|
|
1283
|
+
};
|
|
1278
1284
|
var rehead = function (list) {
|
|
1279
1285
|
for (var cx = 0, dx = list.length; cx < dx; cx++) {
|
|
1280
1286
|
var o = list[cx];
|
|
@@ -1901,6 +1907,7 @@ module.exports = {
|
|
|
1901
1907
|
isEval,
|
|
1902
1908
|
rename,
|
|
1903
1909
|
relink,
|
|
1910
|
+
rolink,
|
|
1904
1911
|
rehead,
|
|
1905
1912
|
createSeeker,
|
|
1906
1913
|
setqueue,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var scanner2 = require("./scanner2");
|
|
2
2
|
var strings = require("../basic/strings");
|
|
3
3
|
var Program = scanner2.Program;
|
|
4
|
-
var { STAMP, SCOPED, STRAP, EXPRESS, pickAssignment, COMMENT, SPACE, PROPERTY, VALUE, LABEL, QUOTED, snapExpressFoot, isEval, canbeTemp, rename, isHalfSentence, skipFunction, getDeclared, skipAssignment, skipSentenceQueue, createScoped, createString, splice, relink, pickSentence, snapExpressHead, needBreakBetween } = require("./common");
|
|
4
|
+
var { STAMP, SCOPED, STRAP, EXPRESS, pickAssignment, COMMENT, SPACE, PROPERTY, VALUE, LABEL, QUOTED, snapExpressFoot, isEval, canbeTemp, rename, isHalfSentence, skipFunction, getDeclared, skipAssignment, skipSentenceQueue, createScoped, createString, splice, relink, rolink, pickSentence, snapExpressHead, needBreakBetween } = require("./common");
|
|
5
5
|
var splice2 = function (q, from, to, ...a) {
|
|
6
6
|
var cx = q.indexOf(from);
|
|
7
7
|
if (cx < 0) throw console.log(splice2.caller, console.format(`\r\n<red2>${i18n`自`}</red2>`), from && createString([from]), console.format(`\r\n<yellow>${i18n`至`}</yellow>`), to && createString([to]), console.format(`\r\n<cyan>${i18n`码列`}</cyan>`), createString(pickSentence(from))), i18n`结构异常`;
|
|
@@ -1009,6 +1009,7 @@ var killobj = function (body, getobjname, getletname, getname_, letname_, deep =
|
|
|
1009
1009
|
break;
|
|
1010
1010
|
case "async":
|
|
1011
1011
|
splice(body, i, 1);
|
|
1012
|
+
if (o.next) o.next.async = true;
|
|
1012
1013
|
break;
|
|
1013
1014
|
case "new":
|
|
1014
1015
|
if (o.next?.needle) {
|
|
@@ -1068,7 +1069,7 @@ var killobj = function (body, getobjname, getletname, getname_, letname_, deep =
|
|
|
1068
1069
|
}
|
|
1069
1070
|
else if (o.type === STAMP) {
|
|
1070
1071
|
if (o.text === "=>") {
|
|
1071
|
-
i = unarrow(body, i
|
|
1072
|
+
i = unarrow(body, i);
|
|
1072
1073
|
continue;
|
|
1073
1074
|
}
|
|
1074
1075
|
else i = newpunc(body, i, _getnewname);
|
|
@@ -1255,7 +1256,7 @@ var unforof = function (o, getnewname, used, killobj) {
|
|
|
1255
1256
|
splice(tf[1], 0, 0, ...splice2(r.queue, r, n, ...tf));
|
|
1256
1257
|
}
|
|
1257
1258
|
};
|
|
1258
|
-
var unarrow = function (body, i
|
|
1259
|
+
var unarrow = function (body, i) {
|
|
1259
1260
|
var o = body[i];
|
|
1260
1261
|
var p = o.prev;
|
|
1261
1262
|
var n = o.next;
|
|
@@ -1273,12 +1274,19 @@ var unarrow = function (body, i, killobj, letname_) {
|
|
|
1273
1274
|
if (n.type !== SCOPED || !n.brace) {
|
|
1274
1275
|
var nni = skipAssignment(body, ni);
|
|
1275
1276
|
b = scanner2('{}')[0];
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1277
|
+
var q = splice(body, ni, nni - ni, b);
|
|
1278
|
+
if (q.length === 1 && q.entry === '(') {
|
|
1279
|
+
q = q[0];
|
|
1280
|
+
}
|
|
1281
|
+
splice(b, 0, 0, { type: STRAP, transive: true, text: "return" }, ...q);
|
|
1282
|
+
relink(b);
|
|
1279
1283
|
nni = indexof(body, b, ni) + 1;
|
|
1280
1284
|
}
|
|
1281
1285
|
else nni = ni + 1;
|
|
1286
|
+
var bd = body.slice(pi, nni);
|
|
1287
|
+
if (p?.async) bd.unshift({ type: STRAP, text: 'async' });
|
|
1288
|
+
relink(bd);
|
|
1289
|
+
down(createScoped(bd));
|
|
1282
1290
|
return nni;
|
|
1283
1291
|
};
|
|
1284
1292
|
var getname = function (vars, envs, k) {
|
|
@@ -1653,8 +1661,8 @@ var newpunc = function (body, i, newname) {
|
|
|
1653
1661
|
}
|
|
1654
1662
|
return hi;
|
|
1655
1663
|
}
|
|
1656
|
-
|
|
1657
1664
|
var down = function (scoped) {
|
|
1665
|
+
if (scoped.isArraw) return;
|
|
1658
1666
|
var inAsync = scoped.async;
|
|
1659
1667
|
var inAster = scoped.yield;
|
|
1660
1668
|
var funcMark = [, "aster", "async", "asyncAster"][inAsync << 1 | inAster];
|
|
@@ -1787,13 +1795,13 @@ var down = function (scoped) {
|
|
|
1787
1795
|
};
|
|
1788
1796
|
|
|
1789
1797
|
var markcodes = [];
|
|
1790
|
-
if (scoped.isfunc && scoped.caps.this && (funcMark
|
|
1798
|
+
if (scoped.isfunc && scoped.caps.this && (funcMark || scoped.insett)) {
|
|
1791
1799
|
let tn = _getname("this_");
|
|
1792
1800
|
rename(scoped.caps, "this", tn);
|
|
1793
1801
|
scoped.caps.this.forEach(o => o.origin = 'this');
|
|
1794
1802
|
markcodes.push(`${tn}=this`);
|
|
1795
1803
|
}
|
|
1796
|
-
if (scoped.isfunc && scoped.caps.arguments && (funcMark
|
|
1804
|
+
if (scoped.isfunc && scoped.caps.arguments && (funcMark || scoped.inseta)) {
|
|
1797
1805
|
let an = _getname("arguments_");
|
|
1798
1806
|
scoped.caps.arguments.forEach(o => o.origin = 'arguments');
|
|
1799
1807
|
rename(scoped.caps, "arguments", an);
|
|
@@ -1803,7 +1811,7 @@ var down = function (scoped) {
|
|
|
1803
1811
|
var _killobj = function (_getlocal, o) {
|
|
1804
1812
|
return killobj(o, gettmpname, getletname, _getlocal, _letname);
|
|
1805
1813
|
};
|
|
1806
|
-
var kill = function (scoped
|
|
1814
|
+
var kill = function (scoped) {
|
|
1807
1815
|
if (scoped.isfunc) return down(scoped);
|
|
1808
1816
|
killlet(scoped);
|
|
1809
1817
|
var saveddeep = fordeep;
|
|
@@ -160,16 +160,15 @@ textSpan: highlightSpan.textSpan,
|
|
|
160
160
|
isWriteAccess: highlightSpan.kind === "writtenReference" /* writtenReference */ }, highlightSpan.isInString && { isInString: true }, highlightSpan.contextSpan && { contextSpan: highlightSpan.contextSpan })) }`);
|
|
161
161
|
assert(downLevel(`async()=>({ [argitem.sort ? argitem.sort : 'date']: "desc" })`), `function () { return &async(
|
|
162
162
|
function () {
|
|
163
|
-
_ = {}; if (!argitem.sort) return [1, 0];
|
|
163
|
+
_ = {}; if (!argitem.sort) return [1, 0]; _2 = argitem.sort; return [2, 0]
|
|
164
164
|
},
|
|
165
165
|
function () {
|
|
166
|
-
|
|
166
|
+
_2 = 'date'; return [1, 0]
|
|
167
167
|
},
|
|
168
168
|
function () {
|
|
169
|
-
_[
|
|
169
|
+
_[_2] = "desc"; _1 = _; return [_1, 2]
|
|
170
170
|
})
|
|
171
|
-
var
|
|
172
|
-
var _`);
|
|
171
|
+
var _, _1, _2 }`);
|
|
173
172
|
assert(downLevel(`={...{a:1}}`), `= &extend({}, { a: 1 })`);
|
|
174
173
|
assert(downLevel(`={...a,...c}`), `= &extend({}, a, c)`);
|
|
175
174
|
assert(downLevel(`={a:a,...b,c}`), `= (_ = &extend({ a: a }, b),\r\n_.c = c, _)\r\nvar _`);
|
|
@@ -451,11 +450,14 @@ function (_) {
|
|
|
451
450
|
_0 = _; _0 = _0.a; a = _0
|
|
452
451
|
})
|
|
453
452
|
var a, _0`)
|
|
454
|
-
assert(downLevel(`async a=>await a`), `function (a) { return
|
|
453
|
+
assert(downLevel(`async a=>await a`), `function (a) { return &async(
|
|
455
454
|
function () {
|
|
456
455
|
_0 = a; return [_0, 1]
|
|
456
|
+
},
|
|
457
|
+
function (_) {
|
|
458
|
+
_0 = _; return [_0, 2]
|
|
457
459
|
})
|
|
458
|
-
var
|
|
460
|
+
var _0 }`)
|
|
459
461
|
assert(downLevel(`function(a=b=>b,c){c}`), 'function (a, c) { if (a === undefined) a = function (b) { return b }; c }')
|
|
460
462
|
assert(downLevel(`Object.defineProperty(dis, f.key, {get() {}, set(v) {}})`), `Object.defineProperty(dis, f.key, (_ = {},
|
|
461
463
|
_.get = function () {},
|
|
@@ -533,4 +535,6 @@ return cls0 }(function () {})`);
|
|
|
533
535
|
assert(downLevel(`a=class{ static{[...a]}}`), `var &slice = Array["prototype"]["slice"];
|
|
534
536
|
a = function (cls0) { (function () { &slice["call"](a) }())
|
|
535
537
|
return cls0 }(function () {})`);
|
|
536
|
-
|
|
538
|
+
assert(downLevel(`geta=()=>({[a]:1})`), `geta = function () { return ((_ = {},
|
|
539
|
+
_[a] = 1, _))
|
|
540
|
+
var _ }`);
|
package/coms/compile/powermap.js
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
var powermap = {
|
|
2
|
+
// 中国人喜好攀比的习性,来源于集体主义。集体主义认为,不论是你的我的,都是大家的,既然是大家的就该给大家用,所以就有了见见面分一半。他不看你付出了多少辛苦,坑蒙拐骗也好,千锤百炼也罢,都要分享出来。
|
|
3
|
+
// 由于所有事物以集体名义署名,人们总要有一个理由从集体利益中取得维持自己生活的部分,他要给自己找理由,总得给自己多分一些,就不得不攀比。坑蒙拐骗显然比千锤百炼容易的多,就像英国出现劣币驱逐良币,中国出现了坑蒙拐骗驱逐千锤百炼,大家都没了明察秋毫的积极性,浮夸之风此起彼伏,不曾停止。
|
|
4
|
+
// 从三皇五帝到尧舜禹夏商周,再到民国共和国,中国在大事上亦步亦趋,小事上鸡鸣狗盗,都是走的集体主义互相攀比的思想。你记得二桃杀三士的故事吗?他们是为了攀比节操,都死了。你记得画蛇添足的故事吗?明明比的是速度,最终先画完蛇的人没有喝到酒,他在蛇上的二次作画被当作批判他的理由。
|
|
5
|
+
// 就像一个跑到终点的人多跑了几步,就被大家当成眼中钉,被社会所不容。“说好的跑三圈,你凭什么跑四圈,跑四圈还比别人先跑完,就你能,你比别人多长了一只脚是不是?”对强者的批判和联合挤兑,也是源于中国人的攀比心理,见不得别人比自己好。
|
|
6
|
+
// 生在中国,几乎所有人都不被当成独立的个体,所有人的人权都不被尊重,不尊重自己也不尊重别人。在吃人的社会,不过是有人吃的多,吐出了骨头,有人闻到了肉汤开始反胃,有人被当成异类做成了人肉包子,没有真相可言。
|
|
2
7
|
};
|
|
3
8
|
|
|
4
9
|
[
|
|
@@ -163,6 +163,7 @@ function translate([imap, supports], code) {
|
|
|
163
163
|
var a = scanner2(`[]`);
|
|
164
164
|
v.map(function (o) {
|
|
165
165
|
var name = o.name;
|
|
166
|
+
if (!name) return o;
|
|
166
167
|
if (!name) return scanner2(`(${JSON.stringify(o)})`)[0];
|
|
167
168
|
delete o.name;
|
|
168
169
|
name = ctn('i18n' + getm(name, t.nodup, t.warn), t);
|
|
@@ -181,7 +182,7 @@ function translate([imap, supports], code) {
|
|
|
181
182
|
v = a;
|
|
182
183
|
}
|
|
183
184
|
}
|
|
184
|
-
else if (/^(name|holder|comment)$/.test(k)) v = ctn('i18n' + getm(v, t.nodup, t.warn), t);
|
|
185
|
+
else if (/^(name|holder|comment)$/.test(k)) v = v ? ctn('i18n' + getm(v, t.nodup, t.warn), t) : [{ type: QUOTED, text: `""` }];
|
|
185
186
|
else v = scanner2(`(${JSON.stringify(v)})`)[0];
|
|
186
187
|
o.push({
|
|
187
188
|
type: PROPERTY,
|
package/coms/frame/route.js
CHANGED
|
@@ -155,7 +155,7 @@
|
|
|
155
155
|
menu.children = children;
|
|
156
156
|
}
|
|
157
157
|
if (menu.path) {
|
|
158
|
-
|
|
158
|
+
firstMenu = menu;
|
|
159
159
|
if (map[menu.path] > actived_value) {
|
|
160
160
|
actived = menu;
|
|
161
161
|
actived_value = map[menu.path];
|
|
@@ -232,6 +232,7 @@
|
|
|
232
232
|
menu = result.active || findMenu(zimoilPath) || firstMenu;
|
|
233
233
|
if (!menu?.path) return;
|
|
234
234
|
first_opened = true;
|
|
235
|
+
if (!result.active) setActive(menu, true);
|
|
235
236
|
zimoli.switch(null, null, menu);
|
|
236
237
|
zimoli();
|
|
237
238
|
return;
|
|
@@ -65,7 +65,8 @@ var codecolor = function (c, encode) {
|
|
|
65
65
|
if (!o.text || o.wraped) return;
|
|
66
66
|
o.wraped = true;
|
|
67
67
|
var keys = o.text.split(".");
|
|
68
|
-
|
|
68
|
+
var pdot = !keys[0] && keys.length > 1;
|
|
69
|
+
if (pdot) keys.shift();
|
|
69
70
|
var invoked = null;
|
|
70
71
|
var endi = keys.length - 1;
|
|
71
72
|
if (isInvoke(o)) {
|
|
@@ -83,7 +84,9 @@ var codecolor = function (c, encode) {
|
|
|
83
84
|
keys[cx] = /^[\?]/.test(k) || !k ? k : wrap(k, 'express');
|
|
84
85
|
}
|
|
85
86
|
if (endi === keys.length - 1) keys[endi] = invoked;
|
|
86
|
-
|
|
87
|
+
keys = keys.join(".");
|
|
88
|
+
if (pdot) keys = "." + keys;
|
|
89
|
+
o.text = keys;
|
|
87
90
|
};
|
|
88
91
|
var setPredef = o => setExpress(o, 'predef');
|
|
89
92
|
var setOutside = o => setExpress(o, 'outside');
|