更好的红宝石终端着色库

问题描述:

有很多着色库:彩色,term-ansicolor。 但是有什么能做到这一点:更好的红宝石终端着色库

puts "#{'hello'.red} world!".bold 

而且world!应该大胆。

为了明确这一点,我想这一点:

"\e[1m\e[31mhello\e[0m\e[1m world!\e[0m" 

或更好即使是这样(只是短):

"\e[1;31mhello\e[0;1m world!\e[0m" 

,而不是这样的:

"\e[1m\e[31mhello\e[0m world!\e[0m" 
+2

您提出的API没有意义。图书馆如何知道何时重置颜色/样式? – cam 2011-01-18 18:24:56

+0

@cam:这当然是有道理的。你对html有什么期望?你好世界!'?我想在bash中做同样的事情,我只是想知道是否已经有这样的库,如果没有,我会写我自己的。 – tig 2011-01-18 20:05:09

+0

你的HTML例子是不相同的。 ''red#{“green”.green} red“.red'的预期输出是什么? – cam 2011-01-18 21:32:22

至于有没有,我写我自己, 二十一点和妓女 聪明的 - smart_colored

gem install smart_colored 

和运行

require 'smart_colored/extend' 
# without extend you'll need to use 'string'.colored.red 

puts "#{'hello'.red} world!".bold 
+0

看起来不错。干得好! – Evolve 2011-03-02 11:45:59

的lib被称为Highline 它有一个color方法:say("This should be <%= color('bold', BOLD) %>!") 它可以很容易地用来实现String#bold

+0

请再次阅读问题 – tig 2010-12-14 23:12:22

+1

@tig,再次阅读答案。你要求的是一个String#粗体方法。丹尼尔为你提供了一个方法来制作一个。这也适用于String#红色等。 – 2011-01-18 13:44:01

+0

@Mark:我告诉我的问题,我不需要简单的着色库(有这样的问题谷歌会高兴地帮助我),因为他们都做同样的错误 - 他们不理解嵌套。调整Daniel的代码给了我相同的颜色结果('HighLine.new.color(“#{HighLine.new.color('hello',HighLine :: RED)} world!”,HighLine :: BOLD)'):'world !'不是粗体 – tig 2011-01-18 18:08:19

如果你正在使用的Highline我做了一个宝石延长颜色并提供助手,如:

say_bold 'this is bold text' 

https://github.com/bonzofenix/highline-color