2016-05-16 14 views
-3

Ich versuche Text zu kolorieren. Sag, ich möchte blauen Text. Dies ist die Art, wie ich es bekommen:Farbcodes und String-Interpolation

"\e[34mThis is blue text.\e[0m" 

I define_method bin mit mehreren Methoden (einen für jede Farbe) zu erstellen. Ich behalte den Farbcode für jede Farbe in einem Array. Ich iterieren sowohl über das Farbfeld und den Farbcode, und dies tun:

"\e#{code}m[#{self}\e[0m" 

Wenn ich es laufen, ich "m[test" anstelle des eingefärbten Textes bekommen.

Irgendwelche Gedanken? Wenn, statt #{code}, ich den eigentlichen Code, es funktioniert, aber das wäre wie 20 if s, eine für jede Farbe, und es wird nicht DRY.

+0

Ihr Problem hat nichts mit Rubinen zu tun. – sawa

+0

Ich erstelle eine, also dachte ich, ich würde das Tag hinzufügen. –

Antwort

3

Sie sind wahrscheinlich ein Opfer von copy-paste :)

#    ⇓ incorrect 
puts "\e#{code}m[#{self}\e[0m" 

#  ⇓ correct 
puts "\e[#{code}m#{self}\e[0m" 

Die Öffnung eckige Klammer \e, nicht m folgen sollte.

+0

Ich kann dir nicht genug danken :) –

Verwandte Themen