Class: Vagrant::UI::Colored
Overview
This is a UI implementation that outputs color for various types of messages. This should only be used with a TTY that supports color, but is up to the user of the class to verify this is the case.
Constant Summary collapse
- COLORS =
Terminal colors
{ red: 31, green: 32, yellow: 33, blue: 34, magenta: 35, cyan: 36, white: 37, }
Instance Attribute Summary
Attributes inherited from Interface
#opts, #stderr, #stdin, #stdout
Instance Method Summary collapse
- #color? ⇒ true
-
#format_message(type, message, **opts) ⇒ Object
This is called by
say
to format the message for output.
Methods inherited from Basic
#ask, #clear_line, #initialize, #report_progress, #say
Methods included from Vagrant::Util::SafePuts
Methods inherited from Interface
#initialize, #initialize_copy, #machine
Constructor Details
This class inherits a constructor from Vagrant::UI::Basic
Instance Method Details
#color? ⇒ true
365 366 367 |
# File 'lib/vagrant/ui.rb', line 365 def color? return true end |
#format_message(type, message, **opts) ⇒ Object
This is called by say
to format the message for output.
370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 |
# File 'lib/vagrant/ui.rb', line 370 def (type, , **opts) # Get the format of the message before adding color. = super opts = @opts.merge(opts) # Special case some colors for certain message types opts[:color] = :red if type == :error opts[:color] = :green if type == :success opts[:color] = :yellow if type == :warn # If it is a detail, it is not bold. Every other message type # is bolded. bold = !!opts[:bold] colorseq = "#{bold ? 1 : 0 }" if opts[:color] && opts[:color] != :default color = COLORS[opts[:color]] colorseq += ";#{color}" end # Color the message and make sure to reset the color at the end "\033[#{colorseq}m#{}\033[0m" end |