EN /HU | Belépés

RuBBS

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.

Amit kapsz

  • Telnet és ANSI — IAC negotiation (SGA, ECHO, NAWS terminálméret), full-screen ANSI double-buffered delta diff-fel, xterm 1000/1006 SGR egérkezelés kattintható menükhöz és scrollozható listákhoz.
  • Widgetek — Label, Button, TextInput, TextArea, Checkbox, ListBox, ScrollView, ProgressBar, Spinner, valamint HBox / VBox / Panel konténerek és egy CP437-es ANSI-artnézegető.
  • Kész window-kInfo, Form, MasterDetail, Stream (chat / log), imperatívan vagy egy window DSL-ből megnyitva.
  • Témázás — öt preset (synchronet, nortoncommander, dosnavigator, neumanntronics, mono), mindegyik egy fix szerepnév → ANSI-paletta mapping, kulcsonként felülírható.
  • Markdown és ASCII-art — Markdown → ANSI renderelő, box-drawing bannerek, FIGlet (Artii) nagy bannerek, ERB screen template-ek.
  • PerzisztenciaBBS::Store: thread-safe, session_id szerint upsert-elő CSV-fájl in-memory cache-sel.

Áttekintés

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.

RUBY
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.

A három réteg

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.

TEXT
TCPServer → Session → FlowRunner ─┬→ TUIRunner
                                  ├→ Application#run
                                  └→ FlowRunner (al-flow)

Telepítés

RUBY
gem 'bbs', git: 'https://git.teletypegames.org/engines/rubbs.git'

A Teletype Games BBS ezt használja

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.

Forrásszerkezet

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.

Repó

https://git.teletypegames.org/engines/rubbs