256 色の端末で動作する「 Term::ANSIColor 」のような gem はありますか? perl スクリプト256colors2.plは私の端末でうまく機能します。ANSI コードを手動で挿入せずに、これらの色のいくつかを Ruby スクリプトで使用したいと考えています。
4286 次
5 に答える
12
これは、このガイドの助けを借りて、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
于 2009-09-10T14:03:46.790 に答える
8
この宝石はあなたが必要とするものを処理するはずです: Rainbow
于 2010-05-11T01:59:08.803 に答える
3
これは256色をサポートするものです -
ペイントは端末の色と効果を管理します。term-ansicolor や rainbow などの gem の長所を、使いやすく柔軟なカラーライザーに組み合わせます。
于 2012-04-14T04:19:10.823 に答える
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 }
于 2010-01-04T21:51:13.993 に答える
-3
Rubyforge には Term::ANSIColor という gem があります... :)
しかし、それがどれほど優れているかはわかりません。
于 2009-09-10T06:45:23.227 に答える