refactor(samples): use stack helpers in dev calculator UI

This commit is contained in:
2026-04-24 21:55:58 +02:00
parent 9c61531820
commit 02e68dc1c7
+11 -12
View File
@@ -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 {