256 цветных терминальных библиотек для Ruby?

Вот то, что я сделал бы:

  • Первый испытывают таймаут..., "мы собираемся сделать этот проект совместно. Я собираюсь записать тесты, и Вы собираетесь записать код. Обратите внимание на то, как я пишу тесты, потому что это - то, как мы делаем вещи здесь, и это - то, что я буду ожидать Вас".

  • После этого... "Вы сделаны? Здорово! Сначала давайте посмотрим на тесты, которые управляют Вашей разработкой. О, никакие тесты? Сообщите мне, когда это будет сделано, и мы перенесем рассмотрение Вашего кода. Если Вы нуждаетесь в помощи для формулировки сообщенных мне тестов, и я помогу Вам".

12
задан brianegge 9 September 2009 в 17:29
поделиться

4 ответа

Вот адаптация сценария 256colors2.pl для ruby ​​с некоторой помощью из этого руководства . Он определяет метод print_color (текст, передний план, фон) , который должен быть легко применим к вашим проектам. Он печатает строку в цвете, а затем сбрасывает цвет на значение по умолчанию для терминала. Должно быть достаточно легко пропустить сброс, если вы предпочитаете это.

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
11
ответ дан 26 October 2019 в 10:45
поделиться

На Rubyforge есть драгоценный камень Term :: ANSIColor ... :)
Не знаю, насколько это хорошо.

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

-3
ответ дан 26 October 2019 в 10:45
поделиться

Я немного поиграл с более ранним ответом и получил кое-что, с чем мне было немного веселее работать.

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 

EXAMPLE USAGE

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 }   
1
ответ дан 26 October 2019 в 10:45
поделиться

Этот гем должен обрабатывать все, что вам нужно: Rainbow

8
ответ дан 26 October 2019 в 10:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: