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
5条答案
按热度按时间ijxebb2r1#
下面是256colors2.pl脚本在this guide的帮助下对ruby的一个修改。它定义了一个
print_color(text, foreground, background)
方法,应该很容易应用到你的项目中。它以颜色打印字符串,然后将颜色重置为终端默认值。如果你喜欢的话,应该很容易跳过重置。i86rm4rw2#
这个gem应该可以处理你需要的东西:彩虹
f8rj6qna3#
这里有一个支持256色的
Paint为您管理终端颜色和效果。它结合了像term-ansicolor或rainbow这样的宝石的优势,成为一个简单易用的灵活着色器。
Paint
omqzjyyz4#
我玩了一下前面的答案,得到了一些我觉得更有趣的东西。
锂离子电池
示例用法
1rhkuytd5#
Rubyforge上有一个叫做Term::ANSIColor的gem ...:)
不知道它有多好。
http://rubyforge.org/projects/term-ansicolor/