Skip to content

Commit 45d7e25

Browse files
Kasper JungeRalphify
authored andcommitted
refactor: replace if-elif key dispatch in _handle_fullscreen_key with a dict
Eliminates the handled = True/False flag and 8-branch elif chain in favour of a dispatch dict, making it easier to add or remove key bindings. Co-authored-by: Ralphify <noreply@ralphify.co>
1 parent df0419c commit 45d7e25

1 file changed

Lines changed: 15 additions & 21 deletions

File tree

src/ralphify/_console_emitter.py

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1441,27 +1441,21 @@ def _handle_fullscreen_key(self, key: str) -> None:
14411441
return # raced with exit
14421442
if key not in ("q", FULLSCREEN_PEEK_KEY):
14431443
page = self._fullscreen_page_size()
1444-
handled = True
1445-
if key == "j":
1446-
view.scroll_down(1)
1447-
elif key == "k":
1448-
view.scroll_up(1)
1449-
elif key == " ":
1450-
view.scroll_down(page)
1451-
elif key == "b":
1452-
view.scroll_up(page)
1453-
elif key == "g":
1454-
view.scroll_to_top()
1455-
elif key == "G":
1456-
view.scroll_to_bottom()
1457-
elif key == PREV_ITERATION_KEY:
1458-
view.prev_iteration()
1459-
elif key == NEXT_ITERATION_KEY:
1460-
view.next_iteration()
1461-
else:
1462-
handled = False
1463-
if handled and self._fullscreen_live is not None:
1464-
self._fullscreen_live.update(view)
1444+
actions: dict[str, Callable[[], object]] = {
1445+
"j": lambda: view.scroll_down(1),
1446+
"k": lambda: view.scroll_up(1),
1447+
" ": lambda: view.scroll_down(page),
1448+
"b": lambda: view.scroll_up(page),
1449+
"g": view.scroll_to_top,
1450+
"G": view.scroll_to_bottom,
1451+
PREV_ITERATION_KEY: view.prev_iteration,
1452+
NEXT_ITERATION_KEY: view.next_iteration,
1453+
}
1454+
action = actions.get(key)
1455+
if action is not None:
1456+
action()
1457+
if self._fullscreen_live is not None:
1458+
self._fullscreen_live.update(view)
14651459
return
14661460
# Exit path runs outside the lock to avoid re-entry.
14671461
self.exit_fullscreen()

0 commit comments

Comments
 (0)