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
360 361 362 |
# File 'lib/vagrant/ui.rb', line 360 def color? return true end |
#format_message(type, message, **opts) ⇒ Object
This is called by say
to format the message for output.
365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 |
# File 'lib/vagrant/ui.rb', line 365 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 |