diff --git a/samples/dev/index.html b/samples/dev/index.html
index c892ca2..7110f05 100644
--- a/samples/dev/index.html
+++ b/samples/dev/index.html
@@ -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 {