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
- clear_line
- clear_screen
- clr
- cls
- colors
- define_ansicolor_method
- display
- down
- left
- move
- restore
- right
- save
- uncolored
- up
ColoredRegexp | = | /\e\[([34][0-7]|[0-9])m/ |
Define color codes.
[ show source ]
# File lib/more/facets/ansicode.rb, line 240 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
Clear to the end of the current line.
[ show source ]
# File lib/more/facets/ansicode.rb, line 178 def clear_line "\e[K" end
Clear the screen and move cursor to home.
[ show source ]
# File lib/more/facets/ansicode.rb, line 171 def clear_screen "\e[2J" end
Alias for clear_line
Alias for clear_screen
[ show source ]
# File lib/more/facets/ansicode.rb, line 311 def colors @@colors.map { |c| c[0] } end
Like move but returns to original positon after yielding block or adding string argument.
[ show source ]
# File lib/more/facets/ansicode.rb, line 222 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
Move cursor down a specificed number of spaces.
[ show source ]
# File lib/more/facets/ansicode.rb, line 203 def down( spaces=1 ) "\e[#{spaces.to_i}B" end
Move cursor left a specificed number of spaces.
[ show source ]
# File lib/more/facets/ansicode.rb, line 209 def left( spaces=1 ) "\e[#{spaces.to_i}D" end
Move curose to line and column.
[ show source ]
# File lib/more/facets/ansicode.rb, line 191 def move( line, column=0 ) "\e[#{line.to_i};#{column.to_i}H" end
Restore saved cursor positon.
[ show source ]
# File lib/more/facets/ansicode.rb, line 165 def restore "\e[u" end
Move cursor right a specificed number of spaces.
[ show source ]
# File lib/more/facets/ansicode.rb, line 215 def right( spaces=1 ) "\e[#{spaces.to_i}C" end
Save current cursor positon.
[ show source ]
# File lib/more/facets/ansicode.rb, line 159 def save "\e[s" end
[ show source ]
# File lib/more/facets/ansicode.rb, line 297 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
Move cursor up a specificed number of spaces.
[ show source ]
# File lib/more/facets/ansicode.rb, line 197 def up( spaces=1 ) "\e[#{spaces.to_i}A" end