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
sayto 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, #rewriting
Constructor Details
This class inherits a constructor from Vagrant::UI::Basic
Instance Method Details
#color? ⇒ true
406 407 408 |
# File 'lib/vagrant/ui.rb', line 406 def color? return true end |
#format_message(type, message, **opts) ⇒ Object
This is called by say to format the message for output.
411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 |
# File 'lib/vagrant/ui.rb', line 411 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 |