Czy istnieje klejnot typu "Term::ANSIColor", który obsługuje 256 kolorowych terminali? Skrypt perl 256colors2.pl działa świetnie w my terminal i chciałbym użyć niektórych z tych kolorów w moich skryptach ruby bez ręcznego wstawiania kodów ANSI.256 biblioteka terminali kolorowych dla Ruby?
12
A
Odpowiedz
11
Oto adaptacją scenariusza 256colors2.pl ruby, z pewną pomocą this guide. Definiuje on metodę print_color(text, foreground, background)
, która powinna być łatwa do zastosowania w projektach. Drukuje ciąg w kolorze, a następnie resetuje kolor do domyślnego terminala. Powinien być łatwy do pominięcia resetowania, jeśli wolisz.
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
-3
Istnieje klejnot o nazwie Term :: ANSIColor na Rubyforge ... :)
Nie mam pojęcia, jak dobrze jest.
1
Grałem trochę z wcześniejszą odpowiedzią i otrzymałem coś, co było dla mnie przyjemniejsze.
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
Przykład użycia
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 }
8
2
Oto jeden, który obsługuje 256 kolorów -
Farba zarządza kolorami zacisków i efekty dla ciebie. Łączy w sobie zalety klejnotów, takich jak term-ansicolor lub tęcza, w prosty w użyciu i elastyczny kolorizer.
To jest ten, który połączył w swoim pytaniu. – sepp2k
Aby wyjaśnić, że wspomniany klejnot zapewnia 8 kolorów wsparcie ANSI. Szukam tego samego rodzaju, z większą ilością kolorów. – brianegge