A rubbs házon belül fejlesztett Ruby gem Telnet BBS-szerverek építéséhez — egy egyképernyős prompt-tól a teljes, Synchronet-stílusú többablakos alkalmazásig, mindezt Ruby-ban. Ezen fut a BBS-szerverünk.
Info, Form, MasterDetail, Stream (chat / log), imperatívan vagy egy window DSL-ből megnyitva.synchronet, nortoncommander, dosnavigator, neumanntronics, mono), mindegyik egy fix szerepnév → ANSI-paletta mapping, kulcsonként felülírható.BBS::Store: thread-safe, session_id szerint upsert-elő CSV-fájl in-memory cache-sel.A gem neve bbs. Elindít egy TCP listener-t, lekezeli a Telnet negotiation-t, minden kapcsolatnak ad egy Session-t, és három réteget kínál az építkezéshez. A kódod csak screen-eket, window-kat és service-eket deklarál.
require 'bbs'
BBS.configure do |c|
c.flow = BBS::Flow.define do
big_banner 'My BBS'
ask :name, prompt: 'Your name'
say 'Welcome!', style: :success
end
end
BBS.start
Csatlakozás: telnet localhost 2323.
| Réteg | Mi ez | Mikor használd |
|---|---|---|
BBS::Flow |
Sororientált, deklaratív párbeszéd (ask / say / menu / persist) | Login, regisztráció, egyszerű wizard-ok |
BBS::TUI |
Egyképernyős page router framebuffer-alapú delta renderrel | Egycélú, full-screen felületek |
BBS::Application |
Widget framework: Menubar, Window, Button, TextInput, ListBox, … | Többablakos, Synchronet-stílusú BBS-ek |
Egy session-ön belül keverhetők — jellemzően Flow a login-hoz, majd Application a fő felülethez. Egy flow belsejéből átadhatod a vezérlést, és visszakapod, amikor a felhasználó kilép.
TCPServer → Session → FlowRunner ─┬→ TUIRunner
├→ Application#run
└→ FlowRunner (al-flow)
gem 'bbs', git: 'https://git.teletypegames.org/engines/rubbs.git'
A nyilvános BBS-szerverünk (games.teletype.hu:2323) rubbs-on fut. A gem adja az ANSI-felületet, a menubar-t, a stackelt modal window-kat, a Telnet-szervert és az egértámogatást; a bbs-server repóban csak a Teletype-specifikus konfig van — service-bekötések, window-definíciók, formatter-ek.
| Fájl | Feladat |
|---|---|
lib/bbs.rb |
Publikus felület: BBS.configure, BBS.config, BBS.start. |
bbs/server.rb |
TCP accept loop, kliensenként egy thread. |
bbs/session.rb |
Telnet negotiation, egér ki-/bekapcsolás, idle timer. |
bbs/telnet.rb |
Telnet-protokoll, key parsing, xterm SGR egér. |
bbs/flow.rb, bbs/flow_runner.rb |
Flow DSL és interpreter. |
bbs/tui.rb, bbs/tui_runner.rb |
Page router framebuffer-alapú rendereléssel. |
bbs/frame_buffer.rb |
Double buffer, delta diff, ANSI string utility-k. |
bbs/application.rb |
Widget event loop, window stack, builder DSL. |
bbs/widgets.rb, bbs/widget.rb, bbs/container.rb |
Widget-fa és beépített widget-ek. |
bbs/window.rb, bbs/windows/* |
Window és kész window-típusok. |
bbs/theme.rb |
Stíluspaletta preset-ek. |
bbs/markdown.rb |
Markdown → ANSI line renderer. |
bbs/store.rb |
Thread-safe, cached CSV upsert. |
https://git.teletypegames.org/engines/rubbs