256 Farbterminal Bibliothek für Ruby?
Frage
Gibt es ein Juwel wie ‚ Term :: Ansicolor ‘, die mit 256 Farbterminals funktioniert ? Der Perl-Skript 256colors2.pl funktioniert super in mein Terminal , und ich möchte einige verwenden diese Farben in meinem ruby-Skripte ohne den ANSI-Codes manuell eingefügt wird.
Lösung
Hier ist eine Anpassung des 256colors2.pl Skript in Ruby, mit etwas Hilfe von diesem Handbuch . Es definiert eine print_color(text, foreground, background)
Methode, die leicht für Ihre Projekte sein sollte. Er druckt die Zeichenfolge in der Farbe, und setzt dann die Farbe auf den Terminal Standard. Sollte einfach genug sein, um das Zurücksetzen zu überspringen, wenn Sie das bevorzugen würden.
def rgb(red, green, blue)
16 + (red * 36) + (green * 6) + blue
end
def gray(g)
232 + g
end
def set_color(fg, bg)
print "\x1b[38;5;#{fg}m" if fg
print "\x1b[48;5;#{bg}m" if bg
end
def reset_color
print "\x1b[0m"
end
def print_color(txt, fg, bg)
set_color(fg, bg)
print txt
reset_color
end
# convenience method
def rgb_cube
for green in 0..5 do
for red in 0..5 do
for blue in 0..5 do
yield [red, green, blue]
end
print " "
end
puts
end
end
# rgb list on black bg
rgb_cube do |red, green, blue|
print_color("%d%d%d " % [red, green, blue], rgb(red, green, blue), nil)
end
puts
# rgb list on white bg
rgb_cube do |red, green, blue|
print_color("%d%d%d " % [red, green, blue], rgb(red, green, blue), 15)
end
puts
# system palette:
print "System colors:\n";
(0..7).each do |color|
print_color(" ", nil, color)
end
puts
(8..15).each do |color|
print_color(" ", nil, color)
end
puts
puts
# color cube
print "Color cube, 6x6x6:\n"
rgb_cube do |red, green, blue|
print_color(" ", nil, rgb(red, green, blue))
end
puts
# grayscale ramp
print "Grayscale ramp:\n"
for g in (0..23) do
print_color(" ", nil, gray(g))
end
puts
puts
Andere Tipps
sollten Dieser Edelstein handhaben, was Sie brauchen: Regenbogen
Hier ist eine, die 256 Farben unterstützt -
Farbe schafft Terminal Farben und Effekte für Sie. Es kombiniert die Stärken von Edelsteinen wie Termansicolor oder Regenbogen in eine einfache und flexible colorizer zu verwenden.
Ich spielte ein wenig mit der früheren Antwort und bekam etwas, das ich ein wenig mehr Spaß gefunden, mit zu arbeiten.
LIB
def gray(g); 232 + g; end
def rgb(red, green, blue); 16 + (red * 36) + (green * 6) + blue; end
def green; rgb(0,5,0); end
def red; rgb(5,0,0); end
def c( fg, bg = nil ); "#{fg ? "\x1b[38;5;#{fg}m" : ''}#{bg ? "\x1b[48;5;#{bg}m" : ''}" end
def ec; "\x1b[0m"; end
Beispiel für die Verwendung
BASE_DIR = File.expand_path( File.join( File.dirname(__FILE__), '..' ) )
def status( sDaemon )
b = File.exist?( File.join( BASE_DIR, 'pids', "#{sDaemon}.pid" ) )
puts c( b ? green : red ) + sDaemon + ( b ? ' RUNNING' : ' STOPPED' ) + ec
end
%w{ backuper emailSpamChecker indexer log2email orderManager sitemapProducer }.each { |s| status s }
Es ist ein Juwel namens Term :: Ansicolor auf Rubyforge ... :)
Keine Ahnung, wie gut es ist, wenn.