sortie colorisée Ruby - Stack Overflow
Alors que les autres réponses feront l'amende de travail pour la plupart des gens, la façon Unix « correcte » de faire cela devrait être mentionné. Étant donné que tous les types de terminaux texte ne prennent pas en charge ces séquences, vous pouvez interroger la base de données terminfo, une abstraction sur les capabilites de différents terminaux texte. Cela peut sembler la plupart du temps d'intérêt historique - terminaux logiciels utilisés aujourd'hui supportent en général les séquences ANSI - mais il ne possède (au moins) un effet pratique: il est parfois utile de pouvoir définir la variable d'environnement TERM muet pour éviter tous ces style, par exemple lors de l'enregistrement de la sortie dans un fichier texte. En outre, il est bon de faire les choses. -)
Vous pouvez utiliser la gemme-terminfo rubis. Il a besoin de C compiler à installer; J'ai pu l'installer dans mon système Ubuntu 14.10 avec:
Ensuite, vous pouvez interroger la base de données comme celui-ci (voir la page man terminfo pour une liste des codes sont disponibles):
Voici une petite classe wrapper je mets ensemble pour rendre les choses un peu plus simple à utiliser.

(Modifier) Enfin, si vous préférez ne pas besoin d'un bijou, vous pouvez compter sur le programme tput, comme décrit ici - exemple Ruby:
Aussi l'article console Coloriser sortie Ruby-script est utile si vous avez besoin pour créer votre propre bijou. Il explique comment ajouter du colorant ANSI en chaînes. Vous pouvez utiliser ces connaissances pour l'envelopper dans une classe qui étend la chaîne ou quelque chose.
répondu le 28 septembre 09 à 20:38
Voici ce que je l'ai fait pour le faire fonctionner sans avoir besoin de pierres précieuses:
Ensuite, seul le texte dans les citations, il est coloré, et vous revenez à votre programme régulier.
répondu le 28 septembre à 20h29 '09
Et l'amélioration de l'échantillon sur ce lien, vous pouvez étendre la classe String pour le rendre plus facile à utiliser ( « Bonjour » .rouge): classe String; rouge def; coloriser (self, "\ 033 [31m"); fin; fin - Adriano P 18 juillet '12 à 16:06
J'ai fait cette méthode qui pourrait aider. Il est pas une grosse affaire, mais cela fonctionne:
Voici comment l'utiliser:
Des améliorations possibles pourraient être:
- couleurs et bgColors sont définies chaque fois que la méthode est appelée et ils ne changent pas.
- Ajouter d'autres options comme gras. souligner. faible. etc.
Cette méthode ne fonctionne pas pour p. comme p effectue une inspection de son argument. Par exemple:
affichera "\ e [0; 38mHello World \ e [0 m"
Je l'ai testé avec puts. impression. et le joyau de l'enregistreur, et il fonctionne très bien.
Je me suis amélioré et cela fait une classe si les couleurs et bgColors sont des variables de classe et coloriser est une méthode de classe:
Vous pouvez l'utiliser en faisant: