Module ANSICode
In: lib/more/facets/ansicode.rb

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

Methods

clear_line   clear_screen   clr   cls   colors   define_ansicolor_method   display   down   left   move   restore   right   save   uncolored   up  

Constants

ColoredRegexp = /\e\[([34][0-7]|[0-9])m/

Public Class methods

Define color codes.

[Source]

     # File lib/more/facets/ansicode.rb, line 231
231:   def self.define_ansicolor_method(name,code)
232:     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"
233:   end

Public Instance methods

Clear to the end of the current line.

[Source]

     # File lib/more/facets/ansicode.rb, line 169
169:   def clear_line
170:     "\e[K"
171:   end

Clear the screen and move cursor to home.

[Source]

     # File lib/more/facets/ansicode.rb, line 162
162:   def clear_screen
163:     "\e[2J"
164:   end
clr()

Alias for clear_line

cls()

Alias for clear_screen

[Source]

     # File lib/more/facets/ansicode.rb, line 302
302:   def colors
303:     @@colors.map { |c| c[0] }
304:   end

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

[Source]

     # File lib/more/facets/ansicode.rb, line 213
213:   def display( line, column=0, string=nil ) #:yield:
214:     result = "\e[s"
215:     result << "\e[#{line.to_i};#{column.to_i}H"
216:     if block_given?
217:       result << yield
218:       result << "\e[u"
219:     elsif string
220:       result << string
221:       result << "\e[u"
222:     elsif respond_to?(:to_str)
223:       result << self
224:       result << "\e[u"
225:     end
226:     return result
227:   end

Move cursor down a specificed number of spaces.

[Source]

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

Move cursor left a specificed number of spaces.

[Source]

     # File lib/more/facets/ansicode.rb, line 200
200:   def left( spaces=1 )
201:     "\e[#{spaces.to_i}D"
202:   end

Move curose to line and column.

[Source]

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

Restore saved cursor positon.

[Source]

     # File lib/more/facets/ansicode.rb, line 156
156:   def restore
157:     "\e[u"
158:   end

Move cursor right a specificed number of spaces.

[Source]

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

Save current cursor positon.

[Source]

     # File lib/more/facets/ansicode.rb, line 150
150:   def save
151:     "\e[s"
152:   end

[Source]

     # File lib/more/facets/ansicode.rb, line 288
288:   def uncolored(string = nil)
289:     if block_given?
290:       yield.gsub(ColoredRegexp, '')
291:     elsif string
292:       string.gsub(ColoredRegexp, '')
293:     elsif respond_to?(:to_str)
294:       gsub(ColoredRegexp, '')
295:     else
296:       ''
297:     end
298:   end

Move cursor up a specificed number of spaces.

[Source]

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

[Validate]