Module: Termite

Defined in:
lib/termite.rb

Defined Under Namespace

Modules: Palette Classes: Progress

Constant Summary collapse

Colors =
[ :black, :red, :green, :yellow,
:blue, :purple, :cyan, :white  ]
Modifiers =
{
  :reset            =>  'c'    ,

  :enable_wrap      =>  '[7h'  ,
  :disable_wrap     =>  '[7l'  ,

  :home             =>  '[H'   ,
  :save_cursor      =>  '[s'   ,
  :restore_cursor   =>  '[u'   ,

  :erase_front      =>  '[K'   ,
  :erase_back       =>  '[1K'  ,
  :erase_line       =>  '[2K'  ,
  :erase_down       =>  '[J'   ,
  :erase_up         =>  '[1J'  ,
  :erase_screen     =>  '[2J'  ,

  :text_reset       =>  '[0m'  ,
  :bright           =>  '[1m'  ,
  :dim              =>  '[2m'  ,
  :underscore       =>  '[4m'  ,
  :blink            =>  '[5m'  ,
  :reverse          =>  '[7m'  ,
  :hide             =>  '[8m'  ,
}

Class Method Summary collapse

Class Method Details

.colorize(fg, *args) ⇒ Object



64
65
66
67
68
69
70
71
# File 'lib/termite.rb', line 64

def self.colorize( fg, *args )
  args << :"fg_#{fg}"

  unless (bg = args & Colors).empty?
    args << :"bg_#{bg[0]}"
  end
  self.decorate( *args )
end

.decorate(*args) ⇒ Object



56
57
58
59
60
61
62
# File 'lib/termite.rb', line 56

def self.decorate( *args )
  text = args.select {|arg| arg.is_a? String }.join

  self.escape( *args ) +
  text +
  self.escape( :text_reset )
end

.escape(*args) ⇒ Object



50
51
52
53
54
# File 'lib/termite.rb', line 50

def self.escape( *args)
  (args & Termite::Modifiers.keys).map do |m|
    "\e" + Modifiers[m]
  end.join ''
end

.rewrite(str) ⇒ Object



73
74
75
76
77
78
# File 'lib/termite.rb', line 73

def self.rewrite( str )
  self.escape(:erase_front) +
  self.escape(:save_cursor) +
  str + "\n" +
  self.escape(:restore_cursor)
end