Compare commits

..

No commits in common. "master" and "2.2.1" have entirely different histories.

2 changed files with 46 additions and 52 deletions

View File

@ -1,54 +1,48 @@
/* eslint-disable */ module.exports = function (s) {
// 四则运算 s = s.trim();
const stack = new Array();
!(function () { let preSign = '+';
var calculate = function (s) { let numStr = '';
s = s.trim(); const n = s.length;
const stack = new Array(); for (let i = 0; i < n; ++i) {
let preSign = '+'; if (s[i] === '.' || (!isNaN(Number(s[i])) && s[i] !== ' ')) {
let numStr = ''; numStr += s[i];
const n = s.length; } else if (s[i] === '(') {
for (let i = 0; i < n; ++i) { let isClose = 1;
if (s[i] === '.' || (!isNaN(Number(s[i])) && s[i] !== ' ')) { let j = i;
numStr += s[i]; while (isClose > 0) {
} else if (s[i] === '(') { j += 1;
let isClose = 1; if (s[j] === '(') isClose += 1;
let j = i; if (s[j] === ')') isClose -= 1;
while (isClose > 0) {
j += 1;
if (s[j] === '(') isClose += 1;
if (s[j] === ')') isClose -= 1;
}
numStr = `${calculate(s.slice(i + 1, j))}`;
i = j;
} }
if ((isNaN(Number(s[i])) && s[i] !== '.') || i === n - 1) { numStr = `${calculate(s.slice(i + 1, j))}`;
let num = parseFloat(numStr); i = j;
switch (preSign) { }
case '+': if (isNaN(Number(s[i]) && s[i] !== '.') || i === n - 1) {
stack.push(num); let num = parseFloat(numStr);
break; switch (preSign) {
case '-': case '+':
stack.push(-num); stack.push(num);
break; break;
case '*': case '-':
stack.push(stack.pop() * num); stack.push(-num);
break; break;
case '/': case '*':
stack.push(stack.pop() / num); stack.push(stack.pop() * num);
break; break;
default: case '/':
break; stack.push(stack.pop() / num);
} break;
preSign = s[i]; default:
numStr = ''; break;
} }
preSign = s[i];
numStr = '';
} }
let ans = 0; }
while (stack.length) { let ans = 0;
ans += stack.pop(); while (stack.length) {
} ans += stack.pop();
return ans; }
}; return ans;
module.exports = calculate; };
})();

View File

@ -851,7 +851,7 @@ function setStringPrototype(screenK, scale) {
const formula = /^calc\((.+)\)$/.exec(this); const formula = /^calc\((.+)\)$/.exec(this);
if (formula && formula[1]) { if (formula && formula[1]) {
// 进行 calc 计算 // 进行 calc 计算
const afterOne = formula[1].replace(/([^\s\(\+\-\*\/]+)\.(left|right|bottom|top|width|height)/g, word => { const afterOne = formula[1].replace(/([^\s]+)\.(left|right|bottom|top|width|height)/g, word => {
const [id, attr] = word.split('.'); const [id, attr] = word.split('.');
return penCache.viewRect[id][attr]; return penCache.viewRect[id][attr];
}); });