From 02e68dc1c72f596f625500dff06b13de01ccb036 Mon Sep 17 00:00:00 2001 From: MatMoul Date: Fri, 24 Apr 2026 21:55:58 +0200 Subject: [PATCH] refactor(samples): use stack helpers in dev calculator UI --- samples/dev/index.html | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) 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 {