루비 용 256 컬러 터미널 라이브러리?
문제
보석이 있나요 '용어 :: Ansicolor'256 개의 컬러 터미널과 함께 작동하는 것은 무엇입니까? Perl 스크립트 256colors2.pl 잘 작동합니다 내 터미널, 그리고 ANSI 코드를 수동으로 삽입하지 않고 루비 스크립트에서 이러한 색상 중 일부를 사용하고 싶습니다.
해결책
다음은 256colors2.pl 스크립트를 Ruby에 적응하고 있습니다. 이 안내서. 정의합니다 print_color(text, foreground, background)
프로젝트에 쉽게 적용 할 수있는 방법. 문자열을 색상으로 인쇄 한 다음 색상을 터미널 기본값으로 재설정합니다. 선호하는 경우 재설정을 건너 뛸 수 있어야합니다.
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
다른 팁
이 보석은 필요한 것을 처리해야합니다. 무지개
256 색을 지원하는 것이 있습니다.
페인트는 터미널 색상과 효과를 관리합니다. 그것은 용어 분석법 또는 무지개와 같은 보석의 강점을 사용하기 쉬운 유연한 색상 라이저로 결합합니다.
나는 이전 답변으로 조금 놀았고 함께 일하기에 조금 더 재미있는 것을 얻었습니다.
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
예제 사용
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 }
Rubyforge의 용어 :: Ansicolor라는 보석이 있습니다 ... :)
그래도 얼마나 좋은지 모르겠습니다.
제휴하지 않습니다 StackOverflow