2009-09-10 7 views

答えて

11

ここthis guideからいくつかの助けを借りて、ルビーする256colors2.plスクリプトの適応があります。これは、あなたのプロジェクトに簡単に適用できる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 
-3

RubyforgeにTerm :: ANSIColorという名前の宝石があります。:)
どれくらいいいか分かりません。

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

+2

これは彼が彼の質問でリンクしたものです。 – sepp2k

+0

上記の宝石が8色のANSIサポートを提供することを明確にする。私はより多くの色で、同じ種類のものを探しています。 – brianegge

1

以前の回答でちょっと遊んでいて、もう少し面白いと思ったことがありました。

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 } 
8

は、この宝石は、あなたが必要なものを処理する必要があります:Rainbow

+0

Windowsではカラーで何も表示されないようです。 – ashes999

2

はここで256色をサポートするものだ -

ペイントは、端末の色を管理しますあなたのための効果。それは用語ansicolorや虹のような宝石の強みを使いやすく柔軟なcolorizerに組み合わせています。

Paint

関連する問題