Add nav DSL to TUI::Page; helpers accumulates across calls

Page#nav sets up up/down key handlers for four common patterns:
  nav :menu,   size:    – wrapping @menu_sel selection
  nav :cycle           – wrapping @item_sel over @items
  nav :list,   window: – @item_sel/@scroll with a visible window
  nav :scroll, content:, window: – @scroll over arbitrary content

size/window accept an integer or a lambda evaluated on the Context
at runtime, so terminal-size-dependent values work naturally.

TUI#helpers now accumulates into one module instead of replacing it,
so configure methods on page classes can each extend helpers without
clobbering previous calls.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-11 22:17:31 +02:00
parent 148fd88660
commit 4eca9513a8
2 changed files with 43 additions and 4 deletions

View File

@@ -1,6 +1,6 @@
Gem::Specification.new do |s|
s.name = 'bbs'
s.version = '0.2.0'
s.version = '0.3.0'
s.summary = 'Universal telnet BBS server library'
s.author = 'Zsolt Tasnadi'
s.files = Dir['lib/**/*.rb']