ANSICode

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

Synopsis

  include Console::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 Commands

    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
Methods
Constants
ColoredRegexp = /\e\[([34][0-7]|[0-9])m/
Public Class methods
define_ansicolor_method(name,code)

Define color codes.

# File lib/facets/more/ansicode.rb, line 192
    def self.define_ansicolor_method(name,code)
      class_eval "def \#{name.to_s}(string = nil)\nresult = \"\\e[\#{code}m\"\nif block_given?\nresult << yield\nresult << \"\\e[0m\"\nelsif string\nresult << string\nresult << \"\\e[0m\"\nelsif respond_to?(:to_str)\nresult << self\nresult << \"\\e[0m\"\nend\nreturn result\nend\n"
    end
Public Instance methods
clear_line()

Clear to the end of the current line.

This method is also aliased as clr
# File lib/facets/more/ansicode.rb, line 130
    def clear_line
      "\e[K"
    end
clear_screen()

Clear the screen and move cursor to home.

This method is also aliased as cls
# File lib/facets/more/ansicode.rb, line 123
    def clear_screen
      "\e[2J"
    end
clr()

Alias for clear_line

cls()

Alias for clear_screen

colors()
# File lib/facets/more/ansicode.rb, line 263
    def colors
      @@colors.map { |c| c[0] }
    end
display( line, column=0, string=nil ) {|| ...}

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

# File lib/facets/more/ansicode.rb, line 174
    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 )

Move cursor down a specificed number of spaces.

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

Move cursor left a specificed number of spaces.

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

Move curose to line and column.

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

Restore saved cursor positon.

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

Move cursor right a specificed number of spaces.

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

Save current cursor positon.

# File lib/facets/more/ansicode.rb, line 111
    def save
      "\e[s"
    end
uncolored(string = nil) {|.gsub(ColoredRegexp, '')| ...}
# File lib/facets/more/ansicode.rb, line 249
    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 )

Move cursor up a specificed number of spaces.

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