문제

보석이 있나요 '용어 :: 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라는 보석이 있습니다 ... :)
그래도 얼마나 좋은지 모르겠습니다.

http://rubyforge.org/projects/term-ansicolor/

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top