Ich brauche nur einen Wert in Hash kolorieren, wie dasWie ein Attribut in Ruby-Hash kolorieren
require 'colorize'
h = {a: 'a', b: 'b'.colorize(:red), c: 'c'}
h[:b]
gibt diese
"\e[0;31;49mb\e[0m"
daher puts h[:b]
funktioniert wie erwartet, während h.to_s
oder h.inspect
gibt dies
"{:a=>\"\\e[0;31;49ma\\e[0m\", :b=>\"\\e[0;34;49mb\\e[0m\"}"
Wie Sie sehen können, wurden alle Kontrollsequenzen maskiert.
Als h
wird implizit in String umgewandelt wird, während puts h
verwenden, alles, was ich in Terminal bekommen, ist dies:
{:a=>"a", :b=>"\e[0;31;49mb\e[0m", :c=>"c"}
ohne Farben.
Was soll ich tun, um die korrekte kolorierte Ausgabe zu erhalten?
Die Ausgabe sieht mir richtig neu zu definieren. Wenn Sie h.values setzen, erhalten Sie das b in rot. 'colorize' fügt einer Zeichenfolge ANSI-Farbsequenzen hinzu. Was hast du erwartet? –
Die Ausgabe ist korrekt, aber alle Steuersequenzen sind ausgeblendet, und sie ist nicht eingefärbt. Überprüfen Sie es selbst –
Die Ausgabe des Programms ist korrekt, alles koloriert fein unter Windows und Linux. Die Ausgabe von 'inspizieren' ist ordnungsgemäß ausgeblendet. Ich sehe das Problem nicht. –