256 لون محطة مكتبة روبي ؟
سؤال
هناك جوهرة مثل 'مصطلح::ANSIColor الذي يعمل مع 256 لون المحطات ؟ Perl 256colors2.pl يعمل كبيرة في محطة بلدي, وأود أن استخدام بعض هذه الألوان في روبي النصوص دون يدويا إدخال رموز ANSI.
المحلول
وهنا التكيف من 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
نصائح أخرى
هذه الأحجار الكريمة يجب التعامل مع ما تحتاج إليه: قوس قزح
هنا واحد يدعم 256-الألوان -
الطلاء تدير محطة الألوان والآثار بالنسبة لك.فهو يجمع بين نقاط القوة في الأحجار الكريمة مثل الأجل ansicolor أو قوس قزح في سهلة الاستخدام ومرنة colorizer.
لقد لعبت في جميع أنحاء قليلا في وقت سابق مع الجواب و حصلت على ما وجدته قليلا أكثر متعة للعمل مع.
ليب
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 }
هناك جوهرة يسمى مصطلح::ANSIColor على Rubyforge...:)
أي فكرة كيف جيدة على الرغم من.