module ANSICode

ANSICode

Module which makes it very easy to use ANSI codes. These are esspecially nice for beautifying shell output.

include ANSICode

p red, "Hello", blue, "World"
=> "\e[31mHello\e[34mWorld"

p red { "Hello" } + blue { "World" }
=> "\e[31mHello\e[0m\e[34mWorld\e[0m"

Supported ANSI Comands

The following is a list of supported codes.

save
restore
clear_screen
cls             # synonym for :clear_screen
clear_line
clr             # synonym for :clear_line
move
up
down
left
right
display

clear
reset           # synonym for :clear
bold
dark
italic          # not widely implemented
underline
underscore      # synonym for :underline
blink
rapid_blink     # not widely implemented
negative        # no reverse because of String#reverse
concealed
strikethrough   # not widely implemented

black
red
green
yellow
blue
magenta
cyan
white

on_black
on_red
on_green
on_yellow
on_blue
on_magenta
on_cyan
on_white

Constants

ColoredRegexp

Public Class Methods

define_ansicolor_method(name,code) click to toggle source

Define color codes.

# File lib/more/facets/ansicode.rb, line 231
  def self.define_ansicolor_method(name,code)
    class_eval "      def #{name.to_s}(string = nil)
          result = "\e[#{code}m"
          if block_given?
              result << yield
              result << "\e[0m"
          elsif string
              result << string
              result << "\e[0m"
          elsif respond_to?(:to_str)
              result << self
              result << "\e[0m"
          end
          return result
      end
"
  end

Public Instance Methods

clear_line() click to toggle source

Clear to the end of the current line.

# File lib/more/facets/ansicode.rb, line 169
def clear_line
  "\e[K"
end
Also aliased as: clr
clear_screen() click to toggle source

Clear the screen and move cursor to home.

# File lib/more/facets/ansicode.rb, line 162
def clear_screen
  "\e[2J"
end
Also aliased as: cls
clr() click to toggle source
Alias for: clear_line
cls() click to toggle source
Alias for: clear_screen
colors() click to toggle source
# File lib/more/facets/ansicode.rb, line 301
def colors
  @@colors.map { |c| c[0] }
end
display( line, column=0, string=nil ) { || ... } click to toggle source

Like move but returns to original positon after yielding block or adding string argument.

# File lib/more/facets/ansicode.rb, line 213
def display( line, column=0, string=nil ) #:yield:
  result = "\e[s"
  result << "\e[#{line.to_i};#{column.to_i}H"
  if block_given?
    result << yield
    result << "\e[u"
  elsif string
    result << string
    result << "\e[u"
  elsif respond_to?(:to_str)
    result << self
    result << "\e[u"
  end
  return result
end
down( spaces=1 ) click to toggle source

Move cursor down a specificed number of spaces.

# File lib/more/facets/ansicode.rb, line 194
def down( spaces=1 )
  "\e[#{spaces.to_i}B"
end
left( spaces=1 ) click to toggle source

Move cursor left a specificed number of spaces.

# File lib/more/facets/ansicode.rb, line 200
def left( spaces=1 )
  "\e[#{spaces.to_i}D"
end
move( line, column=0 ) click to toggle source

Move curose to line and column.

# File lib/more/facets/ansicode.rb, line 182
def move( line, column=0 )
  "\e[#{line.to_i};#{column.to_i}H"
end
restore() click to toggle source

Restore saved cursor positon.

# File lib/more/facets/ansicode.rb, line 156
def restore
  "\e[u"
end
right( spaces=1 ) click to toggle source

Move cursor right a specificed number of spaces.

# File lib/more/facets/ansicode.rb, line 206
def right( spaces=1 )
  "\e[#{spaces.to_i}C"
end
save() click to toggle source

Save current cursor positon.

# File lib/more/facets/ansicode.rb, line 150
def save
  "\e[s"
end
uncolored(string = nil) { || ... } click to toggle source
# File lib/more/facets/ansicode.rb, line 287
def uncolored(string = nil)
  if block_given?
    yield.gsub(ColoredRegexp, '')
  elsif string
    string.gsub(ColoredRegexp, '')
  elsif respond_to?(:to_str)
    gsub(ColoredRegexp, '')
  else
    ''
  end
end
up( spaces=1 ) click to toggle source

Move cursor up a specificed number of spaces.

# File lib/more/facets/ansicode.rb, line 188
def up( spaces=1 )
  "\e[#{spaces.to_i}A"
end