class Riffer::Rig::Terminal::TickerDisplay
Constants
- STOPPING
Public Class Methods
(frame: Riffer::Rig::Terminal::Frame, theme: Riffer::Rig::Terminal::Theme, peek: Riffer::Rig::Terminal::Peek, catalog: ::Riffer::Catalog, clock: ^() → Float) → void
Source
# File lib/riffer/rig/terminal/ticker_display.rb, line 21 def initialize(frame:, theme:, peek:, catalog:, clock:) @frame = frame @theme = theme @peek = peek @catalog = catalog @clock = clock @mutex = Mutex.new @buffer = nil @ticker = nil end
@rbs frame: Riffer::Rig::Terminal::Frame @rbs theme: Riffer::Rig::Terminal::Theme @rbs peek: Riffer::Rig::Terminal::Peek @rbs catalog: ::Riffer::Catalog @rbs clock: ^() -> Float @rbs return: void
Public Instance Methods
(::Riffer::StreamEvents::Base | Riffer::Rig::Events::_Event event) → void
Source
# File lib/riffer/rig/terminal/ticker_display.rb, line 52 def absorb(event) @ticker&.absorb(event) @peek.refresh end
@rbs event: ::Riffer::StreamEvents::Base | Riffer::Rig::Events::_Event @rbs return: void
(Riffer::Rig::Runtime runtime) → void
Source
# File lib/riffer/rig/terminal/ticker_display.rb, line 59 def cancel(runtime) @mutex.synchronize do ticker = @ticker # Ctrl-C is handed over on its own thread, which can arrive once the # turn it was for has ended: a status drawn then would outlive that turn. return unless ticker # The ticker redraws the status line on every tick. ticker.stop @frame.status(@theme.dim(STOPPING)) runtime.cancel end end
@rbs runtime: Riffer::Rig::Runtime @rbs return: void
(Riffer::Rig::Runtime runtime) → void
Source
# File lib/riffer/rig/terminal/ticker_display.rb, line 75 def finish(runtime) @mutex.synchronize do @ticker&.stop @ticker = nil end @peek.unwatch buffer = @buffer return unless buffer&.ended? report = Riffer::Rig::Terminal::TurnReport.call(buffer, runtime.tally, theme: @theme, width: @frame.measure&.last) @frame.append(report) end
@rbs runtime: Riffer::Rig::Runtime @rbs return: void
(Riffer::Rig::Runtime runtime) → void
Source
# File lib/riffer/rig/terminal/ticker_display.rb, line 34 def start(runtime) buffer = Riffer::Rig::Terminal::TurnBuffer.new(clock: @clock) ticker = Riffer::Rig::Terminal::Ticker.new( footer: @frame, theme: @theme, buffer: buffer, rates: @catalog.rates_for(runtime.model) ) @mutex.synchronize do @buffer = buffer @ticker = ticker @peek.watch(buffer) ticker.start end end
@rbs runtime: Riffer::Rig::Runtime @rbs return: void