Module: CLI::UI::StdoutRouter
- Extended by:
- T::Sig
- Defined in:
- lib/cli/ui/stdout_router.rb
Defined Under Namespace
Constant Summary collapse
- WRITE_WITHOUT_CLI_UI =
:write_without_cli_ui
- NotEnabled =
Class.new(StandardError)
Class Attribute Summary collapse
-
.duplicate_output_to ⇒ Object
Returns the value of attribute duplicate_output_to.
Class Method Summary collapse
- .assert_enabled! ⇒ Object
- .current_id ⇒ Object
- .disable ⇒ Object
- .enable ⇒ Object
- .enabled?(stream = $stdout) ⇒ Boolean
- .ensure_activated ⇒ Object
- .with_enabled(&block) ⇒ Object
- .with_id(on_streams:, &block) ⇒ Object
Methods included from T::Sig
Class Attribute Details
.duplicate_output_to ⇒ Object
Returns the value of attribute duplicate_output_to.
327 328 329 |
# File 'lib/cli/ui/stdout_router.rb', line 327 def duplicate_output_to @duplicate_output_to end |
Class Method Details
.assert_enabled! ⇒ Object
352 353 354 |
# File 'lib/cli/ui/stdout_router.rb', line 352 def assert_enabled! raise NotEnabled unless enabled? end |
.current_id ⇒ Object
347 348 349 |
# File 'lib/cli/ui/stdout_router.rb', line 347 def current_id Thread.current[:cliui_output_id] end |
.disable ⇒ Object
385 386 387 388 389 390 391 |
# File 'lib/cli/ui/stdout_router.rb', line 385 def disable return false unless enabled?($stdout) && enabled?($stderr) deactivate($stdout) deactivate($stderr) true end |
.enable ⇒ Object
371 372 373 374 375 376 377 |
# File 'lib/cli/ui/stdout_router.rb', line 371 def enable return false if enabled?($stdout) || enabled?($stderr) activate($stdout, :stdout) activate($stderr, :stderr) true end |
.enabled?(stream = $stdout) ⇒ Boolean
380 381 382 |
# File 'lib/cli/ui/stdout_router.rb', line 380 def enabled?(stream = $stdout) stream.respond_to?(WRITE_WITHOUT_CLI_UI) end |
.ensure_activated ⇒ Object
366 367 368 |
# File 'lib/cli/ui/stdout_router.rb', line 366 def ensure_activated enable unless enabled? end |
.with_enabled(&block) ⇒ Object
357 358 359 360 361 362 |
# File 'lib/cli/ui/stdout_router.rb', line 357 def with_enabled(&block) enable yield ensure disable end |
.with_id(on_streams:, &block) ⇒ Object
334 335 336 337 338 339 340 341 342 343 344 |
# File 'lib/cli/ui/stdout_router.rb', line 334 def with_id(on_streams:, &block) require 'securerandom' id = format('%05d', rand(10**5)) Thread.current[:cliui_output_id] = { id: id, streams: on_streams.map { |stream| T.cast(stream, IOLike) }, } yield(id) ensure Thread.current[:cliui_output_id] = nil end |