Có một viên đá quý như 'Term::ANSIColor' hoạt động với 256 đầu cuối màu không? Kịch bản perl 256colors2.pl hoạt động tốt trong my terminal và tôi muốn sử dụng một số màu này trong các tập lệnh ruby của mình mà không cần chèn mã ANSI theo cách thủ công.256 thư viện thiết bị đầu cuối màu cho Ruby?
12
A
Trả lời
11
Dưới đây là một sự thích nghi của kịch bản 256colors2.pl ruby, với một số sự giúp đỡ từ this guide. Nó định nghĩa một phương thức print_color(text, foreground, background)
nên dễ dàng áp dụng cho các dự án của bạn. Nó in chuỗi màu, và sau đó đặt lại màu cho thiết bị đầu cuối mặc định. Nên đủ dễ dàng để bỏ qua việc đặt lại nếu bạn muốn điều đó.
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
Có một viên ngọc được gọi là Thuật ngữ :: ANSIColor trên Rubyforge ... :)
Không biết nó tốt đến mức nào.
1
Tôi đã chơi xung quanh một chút với câu trả lời trước đó và có thứ gì đó mà tôi thấy thú vị hơn một chút để làm việc.
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
VÍ DỤ SỬ DỤNG
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
2
Dưới đây là một hỗ trợ 256 màu sắc -
Sơn quản lý màu sắc thiết bị đầu cuối và hiệu ứng cho bạn. Nó kết hợp sức mạnh của đá quý như term-ansicolor hoặc cầu vồng vào một bộ chỉnh màu đơn giản để sử dụng và linh hoạt.
Đó là mối liên kết của anh ấy trong câu hỏi của anh ấy. – sepp2k
Để làm rõ rằng đá quý đã đề cập cung cấp hỗ trợ ANSI 8 màu. Tôi đang tìm kiếm một thứ tương tự, với nhiều màu sắc hơn. – brianegge