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) {
|
function getLineValue(line) {
|
||||||
if (calc.isEditing) {
|
if (calc.isEditing) {
|
||||||
if (line === 0) {
|
if (line === 0) {
|
||||||
return calc.inputValue;
|
return calc.inputValue;
|
||||||
}
|
}
|
||||||
return calc.stack[line - 1];
|
return getStackValue(line - 1);
|
||||||
}
|
}
|
||||||
return calc.stack[line];
|
return getStackValue(line);
|
||||||
}
|
}
|
||||||
|
|
||||||
function render() {
|
function render() {
|
||||||
@@ -317,11 +321,7 @@
|
|||||||
if (!calc.isEditing) return;
|
if (!calc.isEditing) return;
|
||||||
if (calc.inputValue !== '') {
|
if (calc.inputValue !== '') {
|
||||||
const value = calc.parseInputValue(calc.inputValue);
|
const value = calc.parseInputValue(calc.inputValue);
|
||||||
if (calc.stack.length >= calc.maxSize) {
|
calc.push(value);
|
||||||
throw new Error('Stack overflow');
|
|
||||||
}
|
|
||||||
calc.stack.unshift(value);
|
|
||||||
if (calc.stack.length > 4) calc.stack.length = 4;
|
|
||||||
}
|
}
|
||||||
calc.inputValue = '';
|
calc.inputValue = '';
|
||||||
calc.isEditing = false;
|
calc.isEditing = false;
|
||||||
@@ -333,16 +333,15 @@
|
|||||||
if (name === 'enter') {
|
if (name === 'enter') {
|
||||||
if (calc.isEditing) {
|
if (calc.isEditing) {
|
||||||
pushEditingValueIfNeeded();
|
pushEditingValueIfNeeded();
|
||||||
} else if (calc.stack.length >= 1) {
|
} else if (calc.isValidIndex(0)) {
|
||||||
calc.push(calc.stack[0]);
|
calc.push(getStackValue(0));
|
||||||
if (calc.stack.length > 4) calc.stack.length = 4;
|
|
||||||
}
|
}
|
||||||
} else if (name === 'swap') {
|
} else if (name === 'swap') {
|
||||||
pushEditingValueIfNeeded();
|
pushEditingValueIfNeeded();
|
||||||
if (calc.stack.length >= 2) calc.swap(0, 1);
|
if (calc.isValidIndex(1)) calc.swap(0, 1);
|
||||||
} else if (name === 'drop') {
|
} else if (name === 'drop') {
|
||||||
pushEditingValueIfNeeded();
|
pushEditingValueIfNeeded();
|
||||||
if (calc.stack.length >= 1) calc.remove(0);
|
if (calc.isValidIndex(0)) calc.remove(0);
|
||||||
} else if (name === 'clear') {
|
} else if (name === 'clear') {
|
||||||
calc.clear();
|
calc.clear();
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user