refactor(samples): use stack helpers in dev calculator UI
This commit is contained in:
+11
-12
@@ -286,14 +286,18 @@
|
||||
});
|
||||
}
|
||||
|
||||
function getStackValue(index) {
|
||||
return calc.isValidIndex(index) ? calc.stack[index] : undefined;
|
||||
}
|
||||
|
||||
function getLineValue(line) {
|
||||
if (calc.isEditing) {
|
||||
if (line === 0) {
|
||||
return calc.inputValue;
|
||||
}
|
||||
return calc.stack[line - 1];
|
||||
return getStackValue(line - 1);
|
||||
}
|
||||
return calc.stack[line];
|
||||
return getStackValue(line);
|
||||
}
|
||||
|
||||
function render() {
|
||||
@@ -317,11 +321,7 @@
|
||||
if (!calc.isEditing) return;
|
||||
if (calc.inputValue !== '') {
|
||||
const value = calc.parseInputValue(calc.inputValue);
|
||||
if (calc.stack.length >= calc.maxSize) {
|
||||
throw new Error('Stack overflow');
|
||||
}
|
||||
calc.stack.unshift(value);
|
||||
if (calc.stack.length > 4) calc.stack.length = 4;
|
||||
calc.push(value);
|
||||
}
|
||||
calc.inputValue = '';
|
||||
calc.isEditing = false;
|
||||
@@ -333,16 +333,15 @@
|
||||
if (name === 'enter') {
|
||||
if (calc.isEditing) {
|
||||
pushEditingValueIfNeeded();
|
||||
} else if (calc.stack.length >= 1) {
|
||||
calc.push(calc.stack[0]);
|
||||
if (calc.stack.length > 4) calc.stack.length = 4;
|
||||
} else if (calc.isValidIndex(0)) {
|
||||
calc.push(getStackValue(0));
|
||||
}
|
||||
} else if (name === 'swap') {
|
||||
pushEditingValueIfNeeded();
|
||||
if (calc.stack.length >= 2) calc.swap(0, 1);
|
||||
if (calc.isValidIndex(1)) calc.swap(0, 1);
|
||||
} else if (name === 'drop') {
|
||||
pushEditingValueIfNeeded();
|
||||
if (calc.stack.length >= 1) calc.remove(0);
|
||||
if (calc.isValidIndex(0)) calc.remove(0);
|
||||
} else if (name === 'clear') {
|
||||
calc.clear();
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user