Class: CLI::UI::Printer

Inherits:
Object
  • Object
show all
Defined in:
lib/cli/ui/printer.rb

Class Method Summary collapse

Class Method Details

.puts(msg, frame_color: nil, to: $stdout, encoding: Encoding::UTF_8, format: true, graceful: true) ⇒ Object

Print a message to a stream with common utilities. Allows overriding the color, encoding, and target stream. By default, it formats the string using CLI:UI and rescues common stream errors.

Attributes

  • msg - (required) the string to output. Can be frozen.

Options

  • :frame_color - Override the frame color. Defaults to nil.

  • :to - Target stream, like $stdout or $stderr. Can be anything with a puts method. Defaults to $stdout.

  • :encoding - Force the output to be in a certain encoding. Defaults to UTF-8.

  • :format - Whether to format the string using CLI::UI.fmt. Defaults to true.

  • :graceful - Whether to gracefully ignore common I/O errors. Defaults to true.

Returns

Returns whether the message was successfully printed, which can be useful if :graceful is set to true.

Example

CLI::UI::Printer.puts('{x} Ouch', stream: $stderr, color: :red)

30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/cli/ui/printer.rb', line 30

def self.puts(msg, frame_color: nil, to: $stdout, encoding: Encoding::UTF_8, format: true, graceful: true)
  msg = (+msg).force_encoding(encoding) if encoding
  msg = CLI::UI.fmt(msg) if format

  if frame_color
    CLI::UI::Frame.with_frame_color_override(frame_color) { to.puts(msg) }
  else
    to.puts(msg)
  end

  true
rescue Errno::EIO, Errno::EPIPE, IOError => e
  raise(e) unless graceful
  false
end