| Module | ANSICode |
| In: |
lib/more/facets/ansicode.rb
|
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"
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
| ColoredRegexp | = | /\e\[([34][0-7]|[0-9])m/ |
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)\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.
# File lib/more/facets/ansicode.rb, line 169 def clear_line "\e[K" end
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
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
# File lib/more/facets/ansicode.rb, line 288 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