Frage

Gibt es ein Juwel wie ‚ Term :: Ansicolor ‘, die mit 256 Farbterminals funktioniert ? Der Perl-Skript 256colors2.pl funktioniert super in mein Terminal , und ich möchte einige verwenden diese Farben in meinem ruby-Skripte ohne den ANSI-Codes manuell eingefügt wird.

War es hilfreich?

Lösung

Hier ist eine Anpassung des 256colors2.pl Skript in Ruby, mit etwas Hilfe von diesem Handbuch . Es definiert eine print_color(text, foreground, background) Methode, die leicht für Ihre Projekte sein sollte. Er druckt die Zeichenfolge in der Farbe, und setzt dann die Farbe auf den Terminal Standard. Sollte einfach genug sein, um das Zurücksetzen zu überspringen, wenn Sie das bevorzugen würden.

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

Andere Tipps

sollten Dieser Edelstein handhaben, was Sie brauchen: Regenbogen

Hier ist eine, die 256 Farben unterstützt -

Farbe schafft Terminal Farben und Effekte für Sie. Es kombiniert die Stärken von Edelsteinen wie Termansicolor oder Regenbogen in eine einfache und flexible colorizer zu verwenden.

Farbe

Ich spielte ein wenig mit der früheren Antwort und bekam etwas, das ich ein wenig mehr Spaß gefunden, mit zu arbeiten.

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 

Beispiel für die Verwendung

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 }   

Es ist ein Juwel namens Term :: Ansicolor auf Rubyforge ... :)
Keine Ahnung, wie gut es ist, wenn.

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top